Navicat for MySQL 运行 .sql 文件导入数据时报错:[Err] 1067 – Invalid default value for ‘created_at’。

原因是 sql_mode 配置问题,在 MySQL5.7 之后,默认使用严格模式,配置为:

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

其中的 NO_ZERO_DATE 表示 MySQL 数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

解决办法是使用宽松模式,具体操作如下:

Windows

打开 MySQL 根目录下的 my.ini 文件,在 mysqld 节点中添加下面的代码,保存后重启 MySQL 服务器

sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Linux

打开 MySQL 配置文件 my.cnf,将

sql_mode = STRICT_TRANS_TABLES

修改为:

sql_mode = ANSI

保存后重启服务器