MySQL从5.5升级到5.6,TIMESTAMP的变化

系统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参数未来会消失
我们不要过度依赖数据库的特性,这些特性会给应用程序造成掣肘

已有 6 条评论
  1. Austot

    Achat Viagra Generic propecia Uk Propecia Sales

    Austot 回复
  2. Ellcurfak

    Achat De Propecia En Espagne Pastillas Para Abortar Online cialis 5 mg best price usa Levitra Taglich where can i buy isotretinoin skin health low price mastercard

    Ellcurfak 回复
  3. FranKap

    Viagra 100mg Price viagra Pharmacyrxone

    FranKap 回复
  4. Austot

    Viagra Cialis Effetti Collaterali cialis 40 mg 121 Dth 24b Kamal Kunj Sv Road

    Austot 回复
  5. FranKap

    Abilify viagra Canadarx Mall Zithromax Purchase Canada

    FranKap 回复
  6. Ellcurfak

    Does Amoxil Treat Upper Respirator Infection Cialis Es Efectivo buy viagra Cialis En Pharmacie Sans Ordonnance Venta Cialis Professional

    Ellcurfak 回复
发表新评论