-
MSSQL(SQL Server) - IN 구문 사용시 매개변수 최대 값 에러DEV 2021. 7. 5. 17:28
평소에 mariadb 를 사용하다 mssql 을 사용해야해서 디비 접속 후 잘 되던 동작도 실행을 시켰다.
그런데 매개변수 수가 너무 많다는 에러가 출력되었다.
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.
좀 찾아보니 mssql 의 IN 구문의 매개변수 수가 2100 개가 최대값이었기 때문에 발생한 에러였다.
id list 를 받아서 삭제하는 부분이었는 데 평소 테스트할 때 작은 데이터와 mariadb 만을 가지고 테스트를 해서 발견하지 못했던 것 같다.
mssql 을 사용할 때도 동작해야 했기 때문에 IN 구문에 들어가는 데이터를 일정 수로 나눠러 쿼리를 실행시키는 방식으로 해결했다.
mariadb(mysql) 은
max_allowed_packet
의 값에 따라 제한이 되며 기본 값은 64MB이다. 테스트로 10000개까지 넣었을 때 잘 수행되었다.https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html#operator_in
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_allowed_packet
오라클은 1000개가 최대값인듯 하다.
https://www.optimusinfo.com/blog/include-more-than-1000-values-in-oracle-in-clause
반응형'DEV' 카테고리의 다른 글
heroku 에 spring boot 프로젝트 배포시 발생한 문제들 해결 방법 (0) 2021.08.16 docker-compose : default network subnet 설정 (0) 2021.07.21 iterm2 단축키 정리 (0) 2021.06.29 ansible - ubuntu 20.04 에 python2, pip 설치하기 (0) 2021.06.11 git - pull/fetch, merge/rebase, reset/revert 개념 정리 (0) 2021.05.27