본문 바로가기
[ Error ]/SQL

[ SQL ] java.sql.SQLSyntaxErrorException

by 환이s 2023. 4. 21.


유저 페이지 기능을 하나씩 추가하면서 회원가입 기능을 점검하던 중...

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 할 때 조심합시다..^^

 

728x90

'[ Error ] > SQL' 카테고리의 다른 글

[ SQL ] IncompleteElementException  (0) 2023.06.08
[ SQL ] 업체 코드 17002 에러  (0) 2023.05.11