预期:字段传入为null,仍能insert、update成功,且时间为当前时间。
实际:后端报错,不可为空
原因分析:
执行:show VARIABLES like "sql_mode";
发现为:STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
指定数据库操作为严格模式,也就是哪怕设置了default值,该字段为not null。操作数据库为null时,也不会走default,会直接报错不可为空。
此时发现解决方案就是修改配置,网上好几种修改方式,我们采取的是修改my.cnf文件
注释掉5.7的默认的配置
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#开启查询缓存
#explicit_defaults_for_timestamp=
true
重启数据库,重启服务。
问题修复。