MySql系统变量explicit_defaults_for_timestamp
之前没太注意timestamp这个数据类型,有个坑就是在默认值上,MySql-5.6.6弃用了explicit_defaults_for_timestamp这个系统变量。我的版本却高于5.6.6,所以就掉进去了,囧。
如果你的mysql版本高于5.6.6,在创建下表时,报ERROR 1067 (42000): Invalid default value for 'ctime'
create table mytime (id int,atime timestamp not null,ctime timestamp not null
);
那么恭喜中枪了!
看看mysql官网上的官网解释吧:
timestamp.png
从图中可以看出来,explicit_default_for_timestamp
是解决这个问题的关键点。
当
explicit_defaults_for_timestamp=false
时,按照如下规则"初始化":
off_default_timestamp.png
- 未明确声明为NULL属性的TIMESTAMP列被分配为NOT NULL属性。 (其他数据类型的列,如果未显式声明为NOT NULL,则允许NULL值。)将此列设置为NULL将其设置为当前时间戳。
- 表中的第一个TIMESTAMP列(如果未声明为NULL属性或显式DEFAULT或ON UPDATE子句)将自动分配DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属性。
- 第一个之后的TIMESTAMP列(如果未声明为NULL属性或显式DEFAULT子句)将自动分配DEFAULT'0000-00-00 00:00:00'(“零”时间戳)。 对于不指定此列的显式值的插入行,该列将分配“0000-00-00 00:00:00”,并且不会发生警告。
当
explicit_defaults_for_timestamp=true
时,按照如下规则"初始化":
no_default_timestamp.png
- 未明确声明为NOT NULL的TIMESTAMP列允许NULL值。 将此列设置为NULL将其设置为NULL,而不是当前时间戳。
- 没有TIMESTAMP列自动分配DEFAULT CURRENT_TIMESTAMP或ON UPDATE CURRENT_TIMESTAMP属性。 必须明确指定这些属性。
- 声明为NOT NULL且没有显式DEFAULT子句的TIMESTAMP列被视为没有默认值。 对于不为此列指定显式值的插入行,结果取决于SQL模式。 如果启用了严格的SQL模式,则会发生错误。 如果未启用严格的SQL模式,则会为列分配隐式默认值“0000-00-00 00:00:00”,并发出警告。 这类似于MySQL如何处理其他时间类型,如DATETIME。
解决方法
在my.cnf中添加或修改explicit_defaults_for_timestamp=true
注:修改时不一定在my.cnf
中,而是在my.cnf
中指定的文件中,我的是写在指定的子文件中的,一开始修改时也挺蒙圈的,附一段内容,方便查找修改。
mysql_my_cnf.png
修改完文件,使文件生效后,再试试创建上面的表,就ok啦~
作者:x_zhaohu
链接:https://www.jianshu.com/p/d7d364745173
來源:简书
MySql系统变量explicit_defaults_for_timestamp相关推荐
- 9、MySQL系统变量(查看和修改)
在 MySQL 数据库,变量分为系统变量和用户自定义变量.系统变量以 @@ 开头,用户自定义变量以 @ 开头. 服务器维护着两种系统变量,即全局变量(GLOBAL VARIABLES)和会话变量(SE ...
- mysql系统变量_MySQL系统变量
@v是用户自定义的变量set @a="1" @@是mysql系统变量select @@version_comment, @@global.xxxx, @@session.xxxx, ...
- MySQL 系统变量(system variables)
MySQL系统变量(system variables)实际上是一些系统参数,用于初始化或设定数据库对系统资源的占用,文件存放位置等等.这些个系统变量可以分为全局以及会话级别层面来修改,有些也可以进行动 ...
- MySQL系统变量和自定义变量
1 系统变量 1.1 查看系统变量 可以使用以下命令查看 MySQL 中所有的全局变量信息. SHOW GLOBAL VARIABLES; MySQL 中的系统变量以两个"@"开头 ...
- MySQL系统变量auto_increment_increment与auto_increment_offset学习总结
在MySQL中,系统变量auto_increment_increment与auto_increment_offset是与自增列相关的两个参数变量.在官方文档中,将其划分为Replication Mas ...
- mysql系统变量详解
mysqld服务器维护两种变量.全局变量影响服务器的全局操作.会话变量影响具体客户端连接相关操作. 服务器启动时,将所有全局变量初始化为默认值.可以在选项文件或命令行中指定的选项来更改这些默认值.服务 ...
- mysql系统变量_MySQL 系统变量(system variables)
3.全局与会话级别设置示例 --如何设置隔离级别 mysql> help isolation Name: 'ISOLATION' Description: Syntax: SET [GLOBAL ...
- mysql系统变量配置文件_MySQL系统变量配置基础
MySQL变量的概念 个人认为可以理解成MySQL在启动或者运行过程中读取的一些参数问题,利用这些参数来启动服务.响应或者支持用户的请求等 变量的配置 如果打算长期使用,应该写入配置文件,而不是在命中 ...
- mysql中括号_mysql进阶知识点,启动项、系统变量、字符集介绍!
点击上方「蓝字」关注我们 mysql数据库是当前应用最为的广泛的数据库,在实际工作中也经常接触到.真正用好mysql也不仅仅是会写sql就行,更重要的是真正理解其内部的工作原理.本文先从宏观角度介绍一 ...
最新文章
- ubuntu16.04 opencv多版本管理与切换
- Android Toast自己定义Toast例子
- 使命召唤 战区:战术竞技新思路,卷入RPG元素的激烈战斗
- 计算智能-群智能算法-蚁群算法matlab实现
- 前端开发笔记(2)css基础(上)
- 为什么CRM WebClient UI每次点了回车都会触发到后台的roundtrip
- rtmp/rtsp/hls公网真正可用的测试地址
- java shell排序_八大排序算法——希尔(shell)排序
- android 清空数组缓存,Android数据持久化之读写SD卡中内容的方法详解
- git 命令总结(转)
- 关于win10系统常用的c盘清理技巧
- 优盘(U 盘) 采用TLC, MLC, SLC芯片 的区别 与使用寿命
- 基于线上问答社区的逻辑性知识自动问答接口ZhidaoChatbot
- 坚果云教你几招提升你办公效率的技巧!
- C# 键盘中的按键对应的KeyValue
- 【转载】太厉害了,终于有人能把TCP/IP 协议讲的明明白白了
- 专精特新中小企业认定标准
- python与人工智能有关系吗_Python与人工智能到底有什么关系呢?Python学习
- oracle中的flag,MMT 表中的 Cost_Flag=E,如何解决?
- widerface人脸数据集,yolo训练集格式,voc训练集格式
热门文章
- 【大数据-Hadoop】Spark
- 【待继续研究】建模-听说你的坏样本不太够
- 效率达CPU一万倍、内含800万神经元:英特尔发布神经形态芯片超算
- 如何构建 FinTech 科学反欺诈体系|架构师实践日
- LSTM模型在问答系统中的应用 2017-06-27 21:03 在问答系统的应用中,用户输入一个问题,系统需要根据问题去寻找最合适的答案。 1:采用句子相似度的方式。根据问题的字面相似度选择相似度最
- 让餐厅放心的云服务-雅座CRM技术解密
- font awesome java_Android使用Font Awesome显示小图标(一)
- BF,KMP,BM三种字符串匹配算法性能比较
- 深入理解分布式技术 - 配置中心
- APM - 零侵入监控JDBC服务