解决MySQL 5.6升5.7之后,非空有默认值的字段,报cannot be null Column ‘xxx‘的问题

devtools/2025/3/25 2:44:42/

背景

项目需要升级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即可


http://www.ppmy.cn/devtools/168542.html

相关文章

LeetCode 1105. 填充书架

LeetCode 1105. 填充书架 题目描述 给定一个数组 books,其中 books[i] [thicknessi, heighti] 表示第 i 本书的厚度和高度。你也会得到一个整数 shelfWidth,表示书架的总宽度。 按顺序将这些书摆放到总宽度为 shelfWidth 的书架上。你可以先选择几本…

如何在 Github 上获得 1000 star?

作为程序员,Github 是第一个绕不开的网站。我们每天都在上面享受着开源带来的便利,我相信很多同学也想自己做一个开源项目,从而获得大家的关注。然而,理想很丰满,现实却是开发了很久的项目仍然无人问津。 最近&#x…

在使用mybatis时遇到枚举的相关问题和解决

目录 1.前言 2.问题解决 2.1 在父依赖中添加版本管理 2.2 微服务中引入依赖 2.3 在application.yaml中进行配置 2.4 在枚举中添加注解 1.前言 今天在使用mybatis的时候,如下SQL查询遇到了报错(其中status为枚举类型,数据库中存的为整形)&#xf…

排序算法-选择排序

选择排序的思路 基本思路步骤: 遍历数组: 从数组的起始位置开始,将第一个元素视为当前最小(或最大)的元素。 找到最小(或最大)元素: 遍历未排序的部分,找到比当前最小&a…

格力地产更名“珠免集团“ 全面转型免税赛道

大湾区经济网品牌观察讯,3月18日,格力地产股份有限公司公告宣布,拟将公司名称变更为"珠海珠免集团股份有限公司",证券简称同步变更为"珠免集团"。此次更名并非简单的品牌焕新,而是标志着这家曾以房…

前端---初识HTML(前端三剑客)

1.HTML 先为大家介绍几个学习前端的网站:菜鸟教程,w3school,CSS HTML:超文本标记语言 超⽂本: ⽐⽂本要强⼤. 通过链接和交互式⽅式来组织和呈现信息的⽂本形式. 不仅仅有⽂本, 还可能包含图⽚, ⾳频, 或者⾃已经审阅过它的学者…

AI建模智能生成:从2D到3D,AI只需一步!

传统3D建模过程既复杂又耗时,要经过建模、贴图、渲染等一系列操作,需要设计师具备深厚的专业技能,同时也要投入大量的时间精力,即便是经验丰富的专业人士,制作一个3D模型也需要历经数小时乃至数日的精心雕琢。 而随着A…

QT学习笔记1

** Qt Creator开发环境配置** 安装流程(Windows平台) 下载与安装 : 访问Qt官网,下载在线安装工具Qt Online Installer。登录或注册Qt账号,选择开源版本(需勾选“接受协议”)。勾选组件&#xff…