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 值日期可以成功插入。