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参数未来会消失
      • 我们不要过度依赖数据库的特性,这些特性会给应用程序造成掣肘
  • 相关阅读:
    hdu 1754 I Hate It
    hdu 2546 饭卡
    hdu 4506 小明系列故事——师兄帮帮忙
    hdu 3665 Seaside
    hdu 3790 最短路径问题
    hdu 1869 六度分离
    最长递增字串的三种做法
    问题集???
    IOS开发学习 碎片S
    超级台阶 (NYOJ—76)
  • 原文地址:https://www.cnblogs.com/nbuntu/p/5576930.html
Copyright © 2011-2022 走看看