导入数据库表报错信息

1067 Invalid default value for ‘birthday’

报错信息如下图所示:

error image

错误分析

报错原因: MySQL 升级到 5.7 而引起的默认值不兼容的问题。

可能是类型的默认值被限制了,查看 sql_mode

show variables like ‘sql_mode’;

error image

可以看到,NO_ZERO_IN_DATE,NO_ZERO_DATE 这两个参数限制时间不能为0

解决问题

  • 临时解决问题

set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

  • 永久解决问题,直接修改 my.cnf 文件

vim /usr/local/etc/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

至此问题解决,执行数据导入脚本,数据表导入成功。