본문 바로가기
Database/MYSQL

Mysql Incorrect integer value 에러 발생시 에러 나오지 않게 하려면?

by 반화넬 2024. 2. 29.
반응형

 


안녕하세요. 
Mysql 버젼을 업그레이드하고나서 발생할때 뭐지 하면서 놀라기도 하는데요.
SQL 사용에 대한 보안 등급이 높아지면서 해당 부분이 기본설정으로 되어 있어서 발생하게 됩니다.
하지만 가능하면 입력 컬럼 input data type에 맞게 호출하시면 좋을것 같습니다. 
우선 에러 발생을 안하게 하는 방법을 알려드릴께요.

# 에러 내용 

Incorrect integer value: '' for column 'memChnl' at row 1 ......



해당 내용의 경우 int 컬럼에 값이 잘못 입력이 된 상태로 실행되었기 때문이기에 해당 값을 int 형으로 맞춰주거나 아니면 에러를 무시 하도록 해야합니다. 

# 설정 확인 (Mysql 5.7 기준)
​
select @@global.sql_mode;

STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION



여기서 확인해야할 항목이 STRICT_TRANS_TABLES 인데요. 
해당 항목의 경우 Data Type 검사를 하게 됩니다.해당 항목을 삭제 하고 재적용하게되면 에러는 무시 될거에요.

SET @@global.sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';



위처럼 바로 실시간으로 적용할 수도 있으나 데몬  실행시에적용을 하실거면 my.cnf 설정에 추가해주시면 됩니다.

# my.cnf 추가
sql_mode="ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"



이렇게하시면 되지만 이건 개발을 편하게 하기 위한 목적이기 때문에 가능하다면 컬럼에 맞게 호출하게끔변경해서 개발하시면좋을것 같습니다.

반응형