MySQL이나 MariaDB의 경우 5.1에서 5.5로 이전할때 주의할 사항이 있다. 5.1에서는 별 문제 없었으나 5.5에서는 STRICT MODE가 기본으로 설정되어 있다.
DB 프로그래밍 할때 모든 변수를 매칭시키도록 해 놨으면 괜찮은데 예전에 짠 프로그램의 경우 일부 항목은 입력을 하지 않도록 해 놨을 것이다. 그런 경우에는 STRICT MODE를 해제해야 할 것이다.
1. Mode 확인
mysql 콘솔로 가서 아래와 같이 입력을 해 본다.
SELECT @@global.sql_mode; |
이때 결과값이 아래와 같다면 STRICT MODE이다.
STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
2. 변경하기.
mysql 콘솔에서 아래와 같이 입력한다.
SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION'; SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION'; |
3. my.cnf 에서 저장하기
그런데 2와 같이 하면 mysqld 를 다시 실행할때마다 원래대로 변경될 것이다.
따라서 my.cnf (혹은 my.cnf.d/server.cnf 에서. 주로 server.cnf를 바꿔야 할 것이다.) 에 아래 항목을 추가한다.
[mysqld] sql_mode="NO_ENGINE_SUBSTITUTION" |
경우에 따라서는 아래와 같이 추가가 된 경우도 있을 것이다. 이때 STRICT로 시작하는 부분을 없애거나 저 줄을 주석처리하고 새 줄에서 위 라인을 추가한다.
[mysqld] sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" |
이제 1로 가서 설정 유무를 확인해 보고 프로그램 정상 동작 여부를 확인해 보라.