前段时间,系统MySQL从5.5升级到了5.6,系统出现了大量的异常。大部分异常引起原因是由于TIMESTAMP的行为发生了变化。

TIMESTAMP在MySQL5.5中的行为

  • 第一个未设置默认值的TIMESTAMP NOT NULL字段隐式默认值: CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  • 后面未设置默认值的TIMESTAMP NOT NULL字段隐式默认值: 0000-00-00 00:00:00
  • TIMESTAMP NOT NULL字段插入NULL时,会使用隐式默认值: CURRENT_TIMESTAMP
  • 不支持多个CURRENT_TIMESTAMP 默认值

TIMESTAMP在MySQL5.6中的行为

  • 支持多个CURRENT_TIMESTAMP 默认值
  • 可以兼容5.5的行为,支持隐性默认值
  • explicit_defaults_for_timestamp=0
  • 测试安装的MySQL5.6默认使用这个参数,启动时,服务器会给出一个警告。
    [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details)
    
  • 可以去掉隐性默认值
  • explicit_defaults_for_timestamp=1

总结

  • MySQL5.5中TIMESTAMP行为是比较诡异的,会造成一些隐含的问题,比如程序中传入了NULL值
  • MySQL5.6中可以将TIMESTAMP的行为变得正常,但会存在兼容问题
  • explicit_defaults_for_timestamp参数未来会消失
  • 我们不要过度依赖数据库的特性,这些特性会给应用程序造成掣肘

mysql 5.6 TIMESTAMP相关推荐

  1. 深入探讨JDBC往MySQL中插入Timestamp类型字段报错问题

    背景描述 最近处于工作需要,用到了Apache的commons dbutils包来操作数据库.在保存数据到MySQL数据库时,报了一个空指针异常,作为开发多年的Java老鸟,最不怕的就是空指针异常,于 ...

  2. mysql 表的timestamp为自动添加

    新设计表时可以执行语句: `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP C ...

  3. MySQL中有关TIMESTAMP和DATETIME的总结

    一.MySQL中如何表示当前时间? 其实,表达方式还是蛮多的,汇总如下: CURRENT_TIMESTAMP CURRENT_TIMESTAMP() NOW() LOCALTIME LOCALTIME ...

  4. MySQL DTAETIME、TIMESTAMP、DATE、TIME、YEAR(日期和时间类型)

    MySQL 中有多处表示日期的数据类型:YEAR.TIME.DATE.DTAETIME.TIMESTAMP.当只记录年信息的时候,可以只使用 YEAR 类型. 每一个类型都有合法的取值范围,当指定确定 ...

  5. linux mysql timestamp_MYSQL中TIMESTAMP类型的使用

    MYSQL中TIMESTAMP类型的默认值 MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样. 1.自动UPDATE 和INSERT 到当前的时间: 表: ------------- ...

  6. mysql DATETIME和TIMESTAMP类型

    以mysql 5.7.20 为例 一直以来,理解有偏差,作此记录,纠正 一.DATETIME和TIMESTAMP 都有高达微秒(6位)的精度 范围   DATETIME  1000-01-01 00: ...

  7. mysql字段使用timestamp类型和默认值CURRENT_TIMESTAMP表示默认为时间,类似mssql的getdate()功能;字段自增...

    在mssql数据库中,时间字段如果想使用当前的时间,默认值是 getdate() 在mysql里面,如果是用 datetime类型,值用now() 是不允许的. 修改为   timestamp类型和默 ...

  8. 细说MySQL的时间戳(Timestamp)类型

    转载 生产环境中部署着各种版本的MySQL,包括MySQL 5.5/5.6/5.7三个大版本和N个小版本,由于MySQL在向上兼容性较差,导致相同SQL在不同版本上表现各异,下面从几个方面来详细介绍时 ...

  9. MySQL的时间戳(Timestamp)类型学习

    生产环境中部署着各种版本的MySQL,包括MySQL 5.5/5.6/5.7三个大版本和N个小版本.由于MySQL在向上兼容性较差,导致相同SQL在不同版本上表现各异,尤其是对于时间戳数据类型.下面从 ...

最新文章

  1. 写作预报之Hyper-V Server的图形化管理系统配置!
  2. 2020互联网校招薪资列表及谈薪注意事项
  3. [Python人工智能] 七.什么是过拟合及dropout解决神经网络中的过拟合问题
  4. 面试pythone_python面试常见问题有哪些
  5. DbContext 和ObjectContext两者的区别
  6. 一个黑色全屏的计时器_我入手了一个1000多的智能手环,值吗?|Fitbit Charge 4测评...
  7. python bootstrap_Python-bootstrap
  8. Bootstrap 分页导航的对齐方式
  9. java 写一个简单的计算器
  10. h5居中loading_实现整个html居中最简单方法
  11. Google Play关键词选词方法及常用选词工具
  12. 计算机无线键盘没反应,电脑怎么连接无线键盘 电脑连接无线键盘没反应怎么办...
  13. 【DDR3_Electrical Characteristics and AC Timing】_ Setup,Hold and Slew Rate Derating
  14. php计算一年多少周,同时计算出这一周的开始时间和结束时间(可选返回时间戳或日期)
  15. java初级笔记(翁恺男神
  16. 【活动报名】 拥抱公平《 Impact Tech, She Can 》
  17. oracle数据库中常用语法,oracle数据库常用语法(中文注释版)
  18. 有关多项式处理的各种算法总结
  19. 申请专利必须把技术公开吗?
  20. video标签监听事件

热门文章

  1. Graphviz样例之有限状态自动机
  2. 语言的口味(taste)
  3. 用python画四叶草-使用 python 操作 redis
  4. python软件下载-python软件下载
  5. 学python买什么书-19年学习Python有什么好的书籍推荐吗?
  6. 学python能做什么类型的工作-做自动化,学python要到那种程度呢?
  7. 用python画八卦图-用Python中的画图工具turtle绘制八卦图
  8. 零基础学python还是c语言-C语言是学python的基础吗?
  9. python自动化办公真的好用吗-Python做什么更合适?|老男孩Python自动化运维
  10. python编程100例-Python3经典100例(①)