728x90
- IDE : Intellij
- Framework : Spring Boot
- Build : Gradle
- DB : MSSQL
- JDBC : mybatis
- Error : Incorrect syntax near '@P5'.
- Solve :
위 에러 문구를 구글에 검색했을 때, Stack Overflow와 다른 블로그에서 여러 해결방안을 내왔다.
일단 나의 문제는 매퍼의 SQL INSERT 쿼리문에서 컬럼 사이 ',' 를 쓰지 않아 생긴 문제였다.
'@P5' 라는 키워드가 내 쿼리엔 없는데 대체 무슨일이지? 데이터를 잘못 받았나 싶었다.
이 뜻은 파라미터(P) 중 5 번째를 의미한다.
다른 사람들은 '@P0' 에서 오류가 나던데 그 경우는 괄호가 빠져 있다거나, 한글인코딩, `SQLServer20xxDialect` 등 의 문제였다.
이와 같은 에러가 난다면 먼저 쿼리에서 P 뒤로 오는 숫자 번째의 파라미터 주변을 꼼꼼히 보길 바란다.
(에러 문구 역시 정말 정직하게도 @P5 근처의 문법이 올바르지 않다고 쓰여있지만 P5가 뭔지 몰랐던 나...) - Study :
추가로 쿼리를 작성하며 컬럼을 나열할 때 콤마의 위치에 따라
1) ,컬럼 방식과
2) 컬럼, 방식이 있는데
1의 방식을 더 자주쓰는 이유를 알았다..
주로 신규로 쿼리를 따는 일보다 기존 쿼리를 수정할 때가 많아서 신경쓰지 않았는데, 2와 같은 방식으로 작성하면 꽤나 성가신 일들을 감수해야 한다.
예를 들면 SELECT 절의 마지막 컬럼은 ',' 을 빼줘야 하는데 수정하다가 미처 쓰지 않거나 지우지 않아 오류를 받는다.
그리고 필요에 따라 주석을 해줘야 할 때도 1의 방식으로 작성된 쿼리는 해당 라인만 주석처리를 해주면 되지만, 2의 경우는 콤마를 지웠다 썼다 해줘야 한다.
728x90
반응형
'TIL > 에러' 카테고리의 다른 글
[해결] java.lang.NumberFormatException: For input string 'N’ (0) | 2023.03.16 |
---|