본문 바로가기

MySQL에서 Incorrect integer value: '' for column '컬럼 이름' at row 1 오류 났을 때

728x90
반응형

1366 : Incorrect integer value: '' for column 'gr_use_access' at row 1
error file :adm/boardgroup_form_update.php

위의 예시처럼 1366 오류는 필드에 들어가 data type이 맞지 않을 때 생기는 오류다. 정수형 타입에 null이나 문자형이 입력 될 때 주로 발생한다.

해결을 위해서 root 권한을 이용해 mysql에 로그인 한다.
아래 명령을 이용하면
mysql> select @@global.sql_mode;

+----------------------------------------------------------------------------------------------------------------+
| @@global.sql_mode                                                                                                     |
+----------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

sql_mode 옵션을 확인 할 수 있다.
옵션 중에 굵은 STRICT_TRANS_TABLES를 제거해 주면 된다.

mysql> set @@global.sql_mode = 'ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
 Query OK, 0 rows affected, 1 warning (0.00 sec)

위의 방법은 mysql에서 쿼리를 이용해 set-mode를 변경하는 것이고
my.cnf 환경 설정 파일을 수정할 수 있다.

sql-mode="ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

위의 부분이 주석처리 되어 있으면 #를 제거하고 옵션을 바꿔준다.
그리고 mysqld 데몬을 다시 실행한다.

#service mysqld restart

728x90
반응형