navicat MySQL数据迁移报错1067 - Invalid default value for 'xxx'

发表于

执行命令 select @@GLOBAL.sql_mode;
得到
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

原因在于NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数,需要把它们去掉

方法:在my.cnf中添加 sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
重启数据库

另外,亲测,在命令行中执行set @@sql_mode ='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';不起作用,原因未知,数据库是mysql8