2021-12-21 227
简介: MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘FrozenTime‘ at row 1
问题:
用 navicat 导入数据时,报错:
[Err] 1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'FrozenTime' at row 1

原因:
这是因为当前的 MySQL 不支持 datetime 为 0 的情况。
解决:
sql_mode : 定义了 MySQL 应支持的 SQL语法、数据校验 等,
这样可以更容易地在不同的环境中使用 MySQL。查看全局 sql_mode:
select @@global.sql_mode;
可以看到,NO_ZERO_DATE、NO_ZERO_IN_DATE,把这两个设置去掉。

修改全局sql_mode:
set @@global.sql_mode =
'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

查看当前 sql_mode:

修改当前 sql_mode:
set @@sql_mode =
'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

OK,问题解决。
一旦 MySQL 重启,就必须重新设置一次 全局 和 当前的 sql_mode。
修改sql_mode配置:
在 MySQL 配置文件 mysql.ini 中修改 sql_mode 配置,就不需要每次重启 MySQL 就得重新设置 sql_mode 了。
- 修改MySQL配置, 在 my.ini 的 [mysqld] 下添加:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION