본문 바로가기
[ Error ]/SQL

[ SQL ] java.sql.SQLSyntaxErrorException

by 환이s 2023. 4. 21.
728x90


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

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