유저 페이지 기능을 하나씩 추가하면서 회원가입 기능을 점검하던 중...
SQLSyntaxErrorException 예외가 발생했다.
에러 내용을 확인해 보면 too many values 라고 나오는데 컬럼 수보다 값을 더 추가해서 넣어서
예외가 발생했다고 합니다.
경로를 찾아가서 코드를 확인한 결과 SQL문이 잘못된 걸 확인할 수 있었다.
맨 처음 회원가입 코드를 구현하던 중, 회원 가입일, 수정일을 SQL에서 Defalut sysdate로
지정했는데... 코드에는 벨류 값으로 들어오지 않는데, insert를 시킨 것이다..
다행히 sysdate 두 개를 삭제하고 다시 실행해보니 에러가 사라졌다.
SQLSyntaxErrorException 예외에는 too many values 에러 말고도
ORA-00947 : not enough values 에러도 나온다.
ORA-00947 에러는 컬럼 수 보다 벨류 값을 적게 넣었을 때
" 값의 개수가 충분하지 않습니다." 라고 알려줍니다.
대부분 insert 코드 작업을 할 때 벨류값 중 null 값이 들어오는 경우도 있는데,
그건 코드를 찍어보면서 하나씩 찾아가야 하고, SQL문 자체가 잘못된 경우도 있습니다.
예를 들어 위 코드처럼 8개의 칼럼 값이 들어오는데,
insert 문을 insert into member values(?,?,?,?,?,?,?,?) 이런 식으로 작성하면
not enough values 에러가 발생합니다.
insert 하실 땐 들어오는 벨류 값과 컬럼 수를 동일하게 작성하시는 게 좋습니다.
마치며
지금까지 SQLSyntaxErrorException 에러에 대해서 포스팅해보았습니다.
insert 할 때 조심합시다..^^
'[ Error ] > SQL' 카테고리의 다른 글
[ SQL ] IncompleteElementException (0) | 2023.06.08 |
---|---|
[ SQL ] 업체 코드 17002 에러 (0) | 2023.05.11 |