MariaDB 에서 Incorrect integer value: '' for column .... Error > 개발

본문 바로가기
사이트 내 전체검색

개발

MariaDB 에서 Incorrect integer value: '' for column .... Error

페이지 정보

profile_image
작성자 관리자 (61.♡.26.87)
댓글 0건 조회 4,227회 작성일 20-03-18 23:54

본문

CentOS 8 에서 mariadb 최신버전을 이용하는 중에 아래와 같은 오류가 발생한다.

Incorrect integer value: '' for column ....


ㅁ 현상

디비 데이타 타입에 맞지 않은 값을 입력하려고 할 때 발생한다.
예) db datatype 이 int 형인데, '' 을 넣으려고 할 때


ㅁ 원인

입력 값을 엄격하게 처리하는
STRICT_TRANS_TABLES 이 설정되어 있어서다.


ㅁ 이유

MariaDB 10.2.4 버전에서 SQL_MODE 의 default 값이 변경이 되었다.

[code]
From version Default sql_mode setting
MariaDB 10.2.4 STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO , NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
MariaDB 10.1.7 NO_ENGINE_SUBSTITUTION, NO_AUTO_CREATE_USER
[/code]

* 참고 : https://mariadb.com/kb/en/sql-mode/


ㅁ 해결방법

php 의 소스를 다 변경해 주는 방법이 좋겠지만, 현실적으로 해당 설정을 빼는게 정신건강에 좋을 듯 하다.
DB 의 SQL_MODE 에서 STRICT_TRANS_TABLES 를 빼 주어야 한다.

우선, 디비의 SQL_MODE 값을 확인해 보자.
SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;

디비 설정 파일에 해당 설정값 항목이 없기 때문에(default 라서),
위의 SQL_MODE 값을 확인한 후에, STRICT_TRANS_TABLES 를 뺀 나머지 값을 세팅해 주도록 한다.

설정파일은 아래 파일에 있는 [mysqld] 항목에 해당 설정값을 추가해 준다.
/etc/my.cnf.d/mariadb-server.cnf

[mysqld]
sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

주의할 점은 dash(-) 가 아니고 underbar(_) 이다.



* 참고
https://xinet.kr/?p=2191
https://mariadb.com/kb/en/sql-mode/

추천0

댓글목록

등록된 댓글이 없습니다.

Total 386건 7 페이지
  • RSS

검색


사이트 정보

Copyright © Baragi.Net. All rights reserved.