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