《Mysql實例MySQL 5.6 中 TIMESTAMP 的變化分析》要點:
本文介紹了Mysql實例MySQL 5.6 中 TIMESTAMP 的變化分析,希望對您有用。如果有疑問,可以聯系我們。
MYSQL學習在MySQL 5.6.6之前,TIMESTAMP的默認行動:
MYSQL學習■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′,且沒有警告.
MYSQL進修
MYSQL進修
MYSQL學習2列TIMESTAMP未聲明為NULL的默認行動
MYSQL學習從MySQL5.6.6開始這種默認設置的辦法被廢棄了.在MySQL啟動時會出現以下警告:
MYSQL學習
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
Please use --explicit_defaults_for_timestamp server option
(seedocumentation for more details).
MYSQL學習關閉警告,在my.cnf中參加
MYSQL學習
[mysqld]
explicit_defaults_for_timestamp=true
MYSQL學習重啟MySQL后差錯消失,這時TIMESTAMP的行為如下:
MYSQL學習■TIMESTAMP如果沒有顯示聲明NOT NULL,是允許NULL值的,可以直接設置改列為NULL,而沒有默認填充行為.
■TIMESTAMP不會默認分派DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP屬性.
MYSQL進修
MYSQL進修TIMESTAMP 不設置是否為NULL
MYSQL學習■聲明為NOT NULL且沒有默認子句的TIMESTAMP列是沒有默認值的.往數據表中插入列,又沒有給TIMESTAMP列賦值時,如果是嚴格SQL模式,會拋出一個差錯,如果嚴格SQL模式沒有啟用,該列會賦值為'0000-00-00 00:00:00′,同時出現一個警告.(這和MySQL處理其他時間類型數據一樣,如DATETIME)
MYSQL進修
MYSQL進修TIMESTAMP 默認設置為NOT NULL
MYSQL進修Note:
MYSQL進修以上內容和存儲引擎選擇無關.
歡迎參與《Mysql實例MySQL 5.6 中 TIMESTAMP 的變化分析》討論,分享您的想法,維易PHP學院為您提供專業教程。