MySQL 5.7:Invalid default value for 'CREATE_TIME'

一、分析原因

执行 .sql 文件的过程中报错: Invalid default value for 'CREATE_TIME' 

因为 MySQL 5.6 以后 timestamp 设定默认值规则改变,不能为 0000 00-00 00:00:00,MySQL 5.7中不能给日期设置 0 值。

命令行执行:
1 SELECT @@SESSION.sql_mode;
发现:
1 ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

里面的 NO_ZERO_IN_DATE 和 NO_ZERO_DATE 正是问题所在,应去掉这两项。第一项 ONLY_FULL_GROUP_BY 由于之前遇到的问题,已经去掉,至于要不要去掉得结合你个人情况。

 

 

二、解决方案

1、临时解决方案
关掉 ONLY_FULL_GROUP_BY!
1 set @@GLOBAL.sql_mode='';
2 set sql_mode ='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

这种方案在 mysql 重启之后就会失效。 

 

2、永久解决方案

修改 my.ini 或 my.cnf 配置(如果你们 mysql 没有这个文件,就把 my-default.ini 改成 my.ini)

分别在 [mysqld] 和 [mysql] 下面添加:

1 sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

保存后重启 mysql。

 

https://www.jianshu.com/p/2f30786a5a6a

 

posted @ 2019-07-18 14:04  白衣如风  阅读(1371)  评论(0)    收藏  举报