mysql导入数据报错:1067 - Invalid default value for 'comment_date'的解决方法

分类:计算机 | 数据库 | MySQL | 数据导入导出 435
更新:2022-04-03 16:53:33
编辑

参考资料

https://www.psay.cn/toss/134.html

MySQL5.7中的sql_mode默认值

1 异常说明

最近在往新的电脑上迁移一个wordpress网站,在往新电脑上的mysql数据库中导入数据时,报错:1067 - Invalid default value for 'comment_date'。

2 异常分析

这个错误的字面意思就是字段‘comment_date’的默认值是无效的,于是查了一下我的导入sql文件,在里面的表wp_comments中找到了字段comment_date,它的默认值是:'0000-00-00 00:00:00',我电脑上装的mysql是5.7.x版本的,而在mysql5.7版本中mysql的sql_mode添加了两个参数:NO_ZERO_IN_DATE和NO_ZERO_DATE,其中NO_ZERO_IN_DATE表示mysql中插入的时间字段值(包括字段的默认值),不允许日期和月份为0;NO_ZERO_DATE表示mysql中插入的时间字段值(包括字段的默认值),不允许日期为0。

3 异常解决

3.1 方案1-修改sql语句中comment_date的默认值

既然mysql不允许comment_date的默认值中有0,那么我们就将comment_date的默认值设置为'1970-01-01 08:00:01',包括有些字段的值如果是0的话,也给它设置为'1970-01-01 08:00:01'。

3.2 直接修改mysql配置文件my.cnf或my.ini(暂未生效)

在网上看到另外一种方法说的是可以在mysql的配置文件my.cnf或者my.ini中的[mysqld]下面添加如下内容:

sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

然后重启mysql服务即可。

但是我在windows版的mysql配置文件my.ini添加了sql_mode的配置后,mysql启动不了了,暂时不清楚是什么问题。