程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL從5.5升級到5.6,TIMESTAMP的變化

MySQL從5.5升級到5.6,TIMESTAMP的變化

編輯:MySQL綜合教程

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參數未來會消失 我們不要過度依賴數據庫的特性,這些特性會給應用程序造成掣肘

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved