mysql: Incorrect datetime value: ‘0000-00-00’

发现问题

在 gorm 中使用 MySQL 插入多行数据时,日期存在空值会出现这个问题 Incorrect datetime value: '0000-00-00'

问题原因

查看默认 sql_mode

select @@sql_mode;

发现默认 sql_mode 中不允许 0 值的日期

解决方法

以 macOS 为例:

/usr/local/mysql (默认安装目录) 中创建 my.cnf

[mysqld]
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

保存后,打开 系统偏好设置 -> MySQL -> Configuration ,配置 .cnf 路径

然后重启 MySQL 服务

再次查看 sql_mode,发现值已经更新。并且 0 值日期可以成功插入。

发表评论


*