发布于 

导入数据库文件报1067错误

临时修改

该错误是由于时间的默认值不兼容,查看sql_mode

1
show variables like 'sql_mode';

如果结果中含有NO_ZERO_IN_DATE, NO_ZERO_DATE

1
set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZE

或者

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

当然,这个只是临时修改,很可能每导入一次需要重复一次上面的步骤,而且即使执行了上面的步骤,执行完成或者导入完毕后还是会出现1055之类的错误,但是可以不用管,基本是导入成功了的

永久修改

编辑mysql的配配置文件 my.cnf

在[mysqld]下面添加如下列:

1
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

转储sql文件修改

提取出sql文件,通过在sql文件中将“0000-00-00”修改为有效时间如“1970-12-31”,然后运行sql文件实现导入