MySQL的explicit_defaults_for_timestamp参数问题

CentOS 更改 Mysql 8.0 explicit_defaults_for_timestamp系统变量值方法 今天准备把后端写好的SpringBoot项目放到虚拟机上运行时,发现需要手动建表 阅读详情

 

先看官方的描述:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

 

这个参数全局或者sessioin都可以设置,默认是不开启的,可以这样理解:如果一行数据中某些列被更新了,如果这一行中有timestamp类型的列,那么么这个timestamp列的数据也会被自动更新到 更新操作所发生的那个时间点;这个操作是由explicit_defaults_for_timestamp这个变更控制的,大概有有以下几种情况:

1、当explicit_defaults_for_timestamp为OFF不打开的时候:

   a)如果TIMESTAMP列没有显示的指明null属性,那么该列会被自动加上not null属性,如果往这个列中插入null值,会自动的设置该列的值为current timestamp值。

   b)表中的第一个TIMESTAMP列,如果没有指定null属性或者没有指定默认值,也没有指定ON UPDATE属性。那么该列会自动被加上DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属性。

   c)如果表中有多个TIMESTAMP列,第一个TIMESTAMP列之后的其他的TIMESTAMP类型的列,如果没有指定null属性,也没有指定默认值,那么该列会被自动加上DEFAULT ‘0000-00-0000:00:00’属性。如果insert语句中没有为该列指定值,那么该列中插入’0000-00-00 00:00:00’,并且没有warning。
 

2、当explicit_defaults_for_timestamp为ON打开的时候:

   a)此时如果TIMESTAMP列没有显示的指定not null属性,那么默认的该列可以为null,此时向该列中插入null值时,会直接记录null,而不是current timestamp。

   b)不会自动的为表中的第一个TIMESTAMP列加上DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属性,除非你在建表的时候显示的指明NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。但这时如果插入值为NULL就会直接报错。

   c)timestamp字段有not null属性,而且不允许为空值;在strict的sql模式下,如果你insert语句里面有默认值为null值会报错;使用'0000-00-00 00:00:00'的默认值,会自动用这个默认值。

   d)timestamp字段带有not null属性,而且没有默认值,inset式不指定该字段的值,strict sql_mode下,会报错。非strict sql_mode下有默认值'0000-00-00 00:00:00'的话会录入默认值,这有点想datetime字段。

 

3、版本的差异

这个参数explicit_defaults_for_timestamp在MySQL 5.6.6开始加入,并且MySQL 5.6跟MySQL 5.7的默认SQL模式不同,MySQL 5.7的SQL模式更加严格了,限制了不合法的日期输入,比如”0000-00-00 00:00:00″。

 

 

explicit_defaults_for_timestamp airflow initdb : 出现异常:Exception: Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql   解决方式: https://airflow.readthedocs.io/en/stable/faq.html#how-to-fix-exception-global-... 阅读详情

相关推荐

Windows下启动MySQL5.6服务出现"--secure-file-priv"的报错, 以及后续"Explicit defaults for timestamp"报错解决

问题阐述CMD下执行命令行:// 前台启动MySQL服务 D:\Program Files (x86)\mysql-5.6.37_64\bin\mysqld.exe --defaults-file="D:/Program Files (x86)/mysql-5.6.37_64/my.ini"出现报错:// 类似以下一个属性的报错.因为以前有过类似错误,原因就是因为配置文件问题. ...--secur

极致|专业 2670

【MySQL】explicit_defaults_for_timestamp 参数详解

简介: explicit_defaults_for_timestamp 系统变量决定MySQL服务端对timestamp列中的默认值和NULL值的不同处理方法。此变量自MySQL 5.6.6 版本引入,分为全局级别和会话级别,可动态更新,默认值为OFF。本文主要介绍该参数打开和关闭情况下对timestamp的影响 。 1.explicit_defaults_for_timestamp = OFF ...

weixin_34146410的博客 685

Mysql系统参数explicit_defaults_for_timestamp详解及建议

Mysql系统参数explicit_defaults_for_timestamp详解及建议一、explicit_defaults_for_timestamp作用二、explicit_defaults_for_timestamp取不同值的区别三、总结建议 题外话 在日常工作中,时间戳是非常重要的一个属性,整理以前笔记的时候看到一关于参数explicit_defaults_for_timestamp相关的坑,本文分享相关内容。 一、explicit_defaults_for_timestamp作用 此参数在

南风TaT的博客 6619

基于IMU的纯惯性导航轨迹绘制实践与优化

本文深入探讨了基于IMU的纯惯性导航轨迹绘制实践。通过修改开源组合导航算法KF-GINS,屏蔽GPS更新并简化地球参数,实现了仅依赖IMU数据的轨迹解算。文章详细介绍了代码改造、轨迹可视化方法,并分析了误差累积的根本原因,为深入理解惯性导航原理与传感器融合的必要性提供了宝贵的实践经验。

ff678的博客 394

从零配置ORB-SLAM3:TUM-VI数据集yaml文件参数调优指南

本文深入解析了ORB-SLAM3在TUM-VI数据集上的yaml配置文件参数调优方法。针对双目惯性模式,详细拆解了相机标定、IMU噪声模型和ORB特征提取三大模块的关键参数,解释了其原理与影响,并通过实战案例展示了如何通过调整特征点数量、FAST阈值及IMU噪声参数,有效提升系统在低纹理环境下的鲁棒性和轨迹精度。

weixin_29071809的博客 151

mysql 配置 explicit_defaults_for_timestamp

在之前的配置中,除了目录之外,唯独添加了这一项配置,为什么? 因为mysql中timestamp类型和其他的类型不一样; 在之前先了解一下current timestamp和on update current timestamp: a.current timestamp :当insert时,如果timestamp列属性设为current_timestamp,那么该列会被强制写入当前的...

weixin_30622107的博客 1556

Python爬虫之爬取并下载哔哩哔哩视频

它可以爬取并下载视频文件和音频文件!亲自使用过,太好用了。

2301_80124151的博客 3万+

MySQL explicit_defaults_for_timestamp

默认情况下,timestamp类型字段所在数据行被更新时,该字段会自动更新为当前时间,而参数explicit_defaults_for_timestamp控制这一种行为。 explicit_defaults_for_timestamp=off,数据行更新时,timestamp类型字段更新为当前时间; explicit_defaults_for_timestamp=on,数据行更新时,timesta...

灯火觅阑珊 1万+

python利用IQR方法与3σ方法进行异常值处理(含代码)

python利用IQR方法进行异常值处理

weixin_46713695的博客 2031

AMBA-CHI协议详解(二)

读事务,写事务,原子事务,Stash事务,Dataless事务,DVM事务,Retry事务。

Crazzy_M的博客 6650

mysql参数explicit_defaults_for_timestamp问题

explicit_defaults_for_timestamp = OFF是第一列的行为非常奇葩,而且会影响后面的表列。

InternalsOf 493

【UML】第12篇 序列图(1/2)——基本概念和构成

序列图(Sequence Diagram)是一种用于显示对象之间交互的图形化表示。它描述了在特定场景下,对象之间按照时间顺序进行的消息传递和协作过程。在序列图中,对象被表示为带有垂直虚线的矩形,虚线表示对象的生命周期。对象之间的交互通过箭头表示的消息来表示,箭头从一个对象的生命线指向另一个对象的生命线,表示消息的发送和接收。

AI人人懂 3044

MySQL:timestamp使用CURRENT_TIMESTAMP报错问题

项目出现如下错误: Error updating database. Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'createTime' cannot be null 数据模型如下: /* 创建时间不可为空*/ createTime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' , /

王小二(海阔天空) 5388

史上最详细的sqlmap使用教程

sqlmapsqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等Sqlmap采用了以下5种独特的SQL注入技术基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入。

大河之犬的博客 5万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

MySQL timestamp NOT NULL插入NULL的问题

📢📢📢📣📣📣哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝一位上进心十足的【Java ToB端大厂领域博主】!😜😜😜喜欢java和python,平时比较懒,能用程序解决的坚决不手动解决😜😜😜✨ 如果有对【java】【python】和【前端】感兴趣的【小可爱】,欢迎关注我❤️❤️❤️我们在使用Mysql数据库的时候,由于版本的不同,数据库配置的默认值是不同的。

奇点 3156

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

MySQL 5.6 中TIMESTAMP with implicit DEFAULT value is deprecated错误

安装MySQL时,有warning: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...

Data & Analysis 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

[Warning] TIMESTAMP with implicit DEFAULT value is deprecated.explicit_defaults_for_timestamp

mysql5.6在cmd窗口中启动mysqld.exe时出现以下警告:[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).(中文大意:

虽无鲲鹏翼,不坠凌云心 3万+

mysql 字段默认当前时间戳_关于mysql字段时间类型timestamp默认值为当前时间问题...

今天把应用部署到AWS上发现后台修改内容提交后程序报错,经过排查发现是更新数据的时候,有张数据表中的一个timestamp类型的字段默认值变成了"0000-00-00 00:00:00.000000"格式,导致解析失败造成的。在mysql该字段的创建语句如下`XXX` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TI...

weixin_32688155的博客 2233

mysql之timestamp字段自动更新问题

MySQL的TIMESTAMP字段具有自动更新特性,当修改记录时该字段会自动更新为当前时间。这一行为由explicit_defaults_for_timestamp参数控制,适合记录最后修改时间。相比之下,DATETIME类型不会自动更新,更适合记录创建时间。最佳实践建议每个表同时包含TIMESTAMP(自动更新)和DATETIME(记录创建时间)字段。TIMESTAMP存储时会转换为UTC时间,查询时按连接时区转换,范围从1970到2038年。如需禁用自动更新功能,可将字段类型改为DATETIME。

西京刀客 645

mysql 5.5 timestamp 默认日期_关于mysql字段时间类型timestamp默认值为当前时间问题...

今天把应用部署到AWS上发现后台修改内容提交后程序报错,经过排查发现是更新数据的时候,有张数据表中的一个timestamp类型的字段默认值变成了"0000-00-00 00:00:00.000000"格式,导致解析失败造成的。在MySQL该字段的创建语句如下`XXX` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TI...

weixin_39959615的博客 692

关于mysql字段时间类型timestamp默认值为当前时间问题

今天把应用部署到AWS上发现后台修改内容提交后程序报错,经过排查发现是更新数据的时候,有张数据表中的一个timestamp类型的字段默认值变成了"0000-00-00 00:00:00.000000"格式,导致解析失败造成的。 在mysql该字段的创建语句如下 `XXX` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURR

熊哥club的专栏 4157

MySQL 迁移至 GreatSQL 后,timestamp 字段插入报错解析

某业务系统进行国产化适配,将 MySQL的数据迁移到GreatSQL 后,执行 INSERT INTO ,update_time 传参为空时报错,报错信息为:ERROR 1048 (23000): Column 'update_time' cannot be null ,而原来旧的 MySQL 环境中没有这个问题。

2301_76348009的博客 619

mysql8 设置了默认值 CURRENT_TIMESTAMP 依然报null问题

mysql8 设置了默认值 CURRENT_TIMESTAMP 依然报null问题 原因是 explicitdefaultsfor_timestamp 参数,在mysql8里面默认变为了ON。改成off就行了。 SHOW GLOBAL VARIABLES LIKE "explicit_defaults_for_timestamp"; SET persist explicit_defaults_...

沉睡的博客 2124

mysql不识别参数_Mysql配置参数常见问题

Mysql安装时进行初始化安装,最长碰到的问题就是配置参数兼容性的问题,因为数据库的参数发生改变,导致数据库无法识别的情况很让人头疼,好在有官方文档的指引,才能解决这类问题的发生当前广泛应用的是mysql5.5以上版本,这里以5.6为例,一下包含了所有mysql5.6在使用的参数:比如如下的报错:[Warning] TIMESTAMP with implicit DEFAULT value is ...

weixin_36087045的博客 640
上一篇: 浙大大龄毕业生的曲折人生路
下一篇: ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
林震南
博客等级 码龄8年 440粉丝 4418原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值