INSERT timestamp列时NULL无法填充CURRENT_TIMESTAMP

项目场景:

mysql插入数据时报错
mysqlt版本:5.7.29

问题描述:

错误图片
sql语句

INSERT INTO `list_info`(`id`, `app`, `status`, `createdAt`, `updatedAt`) VALUES ('43c689bc-9632-4af3-9b5a-78a12160adee', 'rec_user_login', 0, NULL, NULL);

createdAt和updatedAt在数据库的表结构如下
在这里插入图片描述
按正常情况下,传入null时,会自动按默认值来处理的。即默认是当前时间。
这个在测试数据库已经证实了,这个错误是在生产环境出现的。

原因分析:

因为有两个环境,测试环境和生产环境,测试环境正常,生产环境不正常,那么就采用对比法,对比两个环境有啥不一样?
首先,Mysql版本一模一样
其次,查到了sqlmode,在这个上面花费了大量时间尝试,最终都没有解决。
最后查明是explicit_defaults_for_timestamp参数的原因。

show variables like 'explicit_defaults_for_timestamp'

在这里插入图片描述
上面是生产环境的配置,是ON,测试环境是OFF的。
在这里插入图片描述
在这里插入图片描述

解决方案:

设置为OFF

SET session  explicit_defaults_for_timestamp = off;

在这里插入图片描述
实际操作时,遇到这个错误,是因为目前我的账号权限不足。云服务商没有给root权限,只能提交工单,让客服修改了,最终结果待修改后再测试。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鹏展翅888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值