mysql5.7以上版本,表字段设置NOT NULL DEFAULT CURRENT_TIMESTAMP后,该字段传入null时保存时报错

预期:字段传入为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

重启数据库,重启服务。

问题修复。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值