zoukankan      html  css  js  c++  java
  • MySQL从5.5升级到5.6,TIMESTAMP的变化

    转载来自http://blog.csdn.net/ghsau。

    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参数未来会消失
      • 我们不要过度依赖数据库的特性,这些特性会给应用程序造成掣肘
  • 相关阅读:
    HDU5873
    HDU5874
    HDU1565(状态压缩dp)
    POJ2774(二分+哈希)
    HDU4474
    HDU2602(背包)
    单链表
    POJ2503(hash)
    POJ1200(hash)
    顺序表
  • 原文地址:https://www.cnblogs.com/nbuntu/p/5576930.html
Copyright © 2011-2022 走看看