본문 바로가기

Story/mysql

MySQL Incorrect datetime value: '0000-00-00 00:00:00'

반응형

mysql 버전을 변경하면서

 

MySQL Incorrect datetime value: '0000-00-00 00:00:00'

 

처럼 문제가 발생했다.

 

 

SHOW VARIABLES LIKE 'sql_mode' ;

 

또는

 

SELECT @@sql_mode ;

 

로 확인해보면

 

SQL_MODE = STRICT_TRANS_TABLES

 

와 같이 되어있었다.

 

 

The default SQL mode in MySQL 5.7 includes these modes: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION.

 

 

이 외의 문제들도 발생하기에 쉽게 처리하려면

 

sql_mode = ''

 

와 같이 바꿔주면 되는대 mysql 서버설정값을 임의로 변경 할 수 없는경우 (일반 호스팅사용)에는 편법을 사용해야한다.

 

당연하지만 mysql DB 를 사용할때 필수로 연결을 먼저 해야한다.

 

연결는 부분에 sql 문을 하나 실행시킨다.

 

ex) $res = $_DB->query(" SET sql_mode = ''; ");

 

이렇게 사용해서 서버의 mysql 설정을 매번 연결한 connection 에 임의로 적용하게 해준다.

 

어차피 이 연결을 통해서만 사용한다면 서버설정을 바꿀수없는 권한이지만 문제를 해결 할 수있다.

 

 

 

참고

 

http://stackoverflow.com/questions/35565128/mysql-incorrect-datetime-value-0000-00-00-000000

http://stackoverflow.com/questions/40425568/incorrect-datetime-value-0000-00-00-000000-date-sub-in-having

https://stackoverflow.com/questions/35565128/mysql-incorrect-datetime-value-0000-00-00-000000

 

 

반응형