使用 Navicat 导入数据表报错。

报错原因:MySQL版本不匹配,导致兼容性的问题。

一般发生在时间类型的字段上:datetime

解决:放宽兼容即可。

查看 sql_mode

show variables like 'sql_mode';

修改 sql_mode

//修改全局的 sql_model
set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

//修改临时的 sql_model
set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

修改了之后,如果导入数据表还报错,关闭当前Navicat,然后重新打开再进行导入即可。

原本的 sql_model

//全局的 sql_model
set global 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,NO_ENGINE_SUBSTITUTION';

//临时的 sql_model
set session 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,NO_ENGINE_SUBSTITUTION';