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

MySQL 5.6 中 TIMESTAMP有那些變更

編輯:MySQL綜合教程

MySQL 5.6 中 TIMESTAMP有那些變更。本站提示廣大學習愛好者:(MySQL 5.6 中 TIMESTAMP有那些變更)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL 5.6 中 TIMESTAMP有那些變更正文


在MySQL 5.6.6之前,TIMESTAMP的默許行動:

TIMESTAMP列假如沒有明白聲明NULL屬性,默許為NOT NULL。(而其他數據類型,假如沒有顯示聲明為NOT NULL,則許可NULL值。)設置TIMESTAMP的列值為NULL,會主動存儲為以後timestamp。

表中的第一個TIMESTAMP列,假如沒有聲明NULL屬性、DEFAULT或許 ON UPDATE,會主動分派 DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP 屬性。

表中第二個TIMESTAMP列,假如沒有聲明為NULL或許DEFAULT子句,默許主動分派'0000-00-00 00:00:00′。拔出行時沒有指明改列的值,該列默許分派'0000-00-00 00:00:00′,且沒有正告。

2列TIMESTAMP未聲明為NULL的默許行動

從MySQL5.6.6開端這類默許設置的辦法被放棄了。在MySQL啟動時會湧現以下正告:

[Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
Please use --explicit_defaults_for_timestamp server option
(seedocumentation for more details).

封閉正告,在my.cnf中參加

[mysqld]
explicit_defaults_for_timestamp=true

重啟MySQL後毛病消逝,這時候TIMESTAMP的行動以下:

TIMESTAMP假如沒有顯示聲明NOT NULL,是許可NULL值的,可以直接設置改列為NULL,而沒有默許填充行動。

TIMESTAMP不會默許分派DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP屬性。

MySQL5.6-INNODB-timestampTIMESTAMP 不設置能否為NULL

聲明為NOT NULL且沒有默許子句的TIMESTAMP列是沒有默許值的。往數據表中拔出列,又沒有給TIMESTAMP列賦值時,假如是嚴厲SQL形式,會拋出一個毛病,假如嚴厲SQL形式沒有啟用,該列會賦值為'0000-00-00 00:00:00′,同時湧現一個正告。(這和MySQL處置其他時光類型數據一樣,如DATETIME)

TIMESTAMP 默許設置為NOT NULL

Note:

以上內容和存儲引擎選擇有關。

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