您的位置:首页 > 房产 > 家装 > 葫芦岛建设工程信息网站_成都网站建设冠辰哪家强_网站优化及推广_百度认证有什么用

葫芦岛建设工程信息网站_成都网站建设冠辰哪家强_网站优化及推广_百度认证有什么用

2025/4/4 7:06:49 来源:https://blog.csdn.net/weixin_42277430/article/details/146373000  浏览:    关键词:葫芦岛建设工程信息网站_成都网站建设冠辰哪家强_网站优化及推广_百度认证有什么用
葫芦岛建设工程信息网站_成都网站建设冠辰哪家强_网站优化及推广_百度认证有什么用

背景

项目需要升级MySQL版本,打算5.6升5.7,升级后发现原本正常的部分SQL,不能正常工作。
字段定义为

created_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

在之前的使用中,有的同事代码不规范,向此字段插入时,会直接插入null,而非不更新此字段的值
如下为错误写法:

INSERT INTO demo_table(name, email, created_time) VALUES ('alice', 'alice@gmail.com', null)

如下为正确写法:

INSERT INTO demo_table(name, email) VALUES ('alice', 'alice@gmail.com')

原因及解决方案

在MySQL5.6版本中,插入null,可自动填入默认值CURRENT_TIMESTAMP,而MySQL5.7的默认行为不一样,会直接报错cannot be null Column 'created_time'

解决方案:MySQL5.7引入了一个配置:explicit_defaults_for_timestamp, 默认是OFF,改为ON即可

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com