Invalid default value for 'time'

Posted 平凡的胖子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Invalid default value for 'time'相关的知识,希望对你有一定的参考价值。

现象:mysql5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for ‘time‘
原因:在命令行窗口查看当前的sql_mode配置:
select @@sql_mode;
结果如下: 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  

其中NO_ZERO_IN_DATE, NO_ZERO_DATE两个选项禁止了0000这样的日期和时间。因此在mysql的配置文件中,重新设置sql_mode,去掉这两项就可以了。

解决办法
windows系统下:
使用 SET [SESSION|GLOBAL] sql_mode=’modes’ 注意:SESSION(默认选项):表示当前回话中生效;GLOBAL(需重启):表示全局生效
也可以修改my.ini配置文件
SET GLOBAL sql_mode=’ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
Linux系统下:
修改my.cnf文件,在[mysqld]中添加
sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION  
修改完成一定重启MySQL
Mac系统下:
在MacOS中默认是没有my.cnf 文件,如果需要对MySql 进行定制,拷贝/usr/local/mysql/support-files/目录中任意一个.cnf 文件。笔者拷贝的是my-default.cnf,
将它放到其他目录,按照上面修改完毕之后,更名为my.cnf,然后拷贝到/etc目录再重启下mysql就大功告成了。

 

以上是关于Invalid default value for 'time'的主要内容,如果未能解决你的问题,请参考以下文章

SQL Error(1067):Invalid default value for ‘sys_create’

mysql创建table时出错 ERROR 1067 (42000): Invalid default value for ' '

Mysql 报错:#1067 - Invalid default value for 'update_time

ERROR 1067 (42000): Invalid default value for 'created_time'

mysql 导入数据error 1067(42000) Invalid default value for 'update'

解决:ERROR 1067 (42000): Invalid default value for 'login_time'