用了多年的Mysql,当用navicat导库时,偶尔会遇到“Finished with error”错误,
如下图:
下面是我结合工作经验,总结一下,将相应情况及解决方法提供给网友们:
情况1:导入的sql数据库脚本文件中日期字段内容包含零值,如’0000-01-01’、‘0000-00-00’,此时如果不方便修正日期字段的时间值,那么就需要修改MySQL的sql_mode的参数值NO_ZERO_IN_DATE和NO_ZERO_DATE,将其去掉。步骤如下:
1)在MySQL的bin⽬录下 mysql -h localhost -u root -p ,连接数据库
2)select @@sql_mode; 查看权限,可以看到有NO_ZERO_IN_DATE,NO_ZERO_DATE
3)去除NO_ZERO_IN_DATE,NO_ZERO_DATE,设置sql_mode的值为
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
命令:
set session sql_mode=‘ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’;
然后提交:
commit;
4)重启MySQL,然后查看:
select @@sql_mode;
此时没有NO_ZERO_IN_DATE,NO_ZERO_DATE了。
见下图:
注意:关于NO_ZERO_IN_DATE与NO_ZERO_DATE的介绍,参见《MySQL的sql_mode的参数值NO_ZERO_IN_DATE和NO_ZERO_DATE总结》(https://cdn.modb.pro/db/336144)
情况2:当前Mysql版本过低,而sql源文件高于当前版本,比如Mysql5.7不支持utf8mb4_0900_ai_ci与utf8mb4_da_0900_ai_ci,而Mysql8.0支持,如果sql脚本是Mysql8.0生成的,那么当导入Mysql5.7时,会出现报“Finished with error”错误,那么出现这种情况,有二种方法,一是升级Mysql版本,二是修改sql文件,将其中的utf8mb4_0900_ai_ci与utf8mb4_da_0900_ai_ci替换成utf8mb4_unicode_ci或者utf8mb4_general_ci,当然这要与数据库的字符排序规则相匹配(此种方式只用于浏览查看数据,不建议用于生产环境)。
下面是Mysql8.0生成的sql文件,其中包含utf8mb4_0900_ai_ci的示例,见下图:
来源地址:https://blog.csdn.net/helloworldchina/article/details/128509815