MySQL 5.6 中 TIMESTAMP 的變化分析
在MySQL 5.6.6之前,TIMESTAMP的默認行為:
■TIMESTAMP列如果沒有明確聲明NULL屬性,默認為NOT NULL。(而其他數(shù)據(jù)類型,如果沒有顯示聲明為NOT NULL,則允許NULL值。)設(shè)置TIMESTAMP的列值為NULL,會自動存儲為當(dāng)前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開始這種默認設(shè)置的方法被廢棄了。在MySQL啟動時會出現(xiàn)以下警告:
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (seedocumentation for more details).
關(guān)閉警告,在my.cnf中加入
[mysqld] explicit_defaults_for_timestamp=true
重啟MySQL后錯誤消失,這時TIMESTAMP的行為如下:
■TIMESTAMP如果沒有顯示聲明NOT NULL,是允許NULL值的,可以直接設(shè)置改列為NULL,而沒有默認填充行為。
■TIMESTAMP不會默認分配DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP屬性。

TIMESTAMP 不設(shè)置是否為NULL
■聲明為NOT NULL且沒有默認子句的TIMESTAMP列是沒有默認值的。往數(shù)據(jù)表中插入列,又沒有給TIMESTAMP列賦值時,如果是嚴格SQL模式,會拋出一個錯誤,如果嚴格SQL模式?jīng)]有啟用,該列會賦值為'0000-00-00 00:00:00′,同時出現(xiàn)一個警告。(這和MySQL處理其他時間類型數(shù)據(jù)一樣,如DATETIME)

TIMESTAMP 默認設(shè)置為NOT NULL
Note:
以上內(nèi)容和存儲引擎選擇無關(guān)。
相關(guān)文章
mysql group_concat()函數(shù)用法總結(jié)
這篇文章主要介紹了mysql group_concat()函數(shù)用法,結(jié)合實例形式較為詳細的group_concat()函數(shù)的功能、使用方法與相關(guān)注意事項,需要的朋友可以參考下2016-06-06
解決MySQL8.0本地計算機上的MySQL服務(wù)啟動后停止沒有報告任何錯誤的問題(最新推薦)
解決MySQL服務(wù)啟動后停止沒有報告任何錯誤的方法包括修改my.ini文件編碼為ANSI、修正MySQL服務(wù)可執(zhí)行文件的路徑以及關(guān)閉系統(tǒng)管理中的MySQL80服務(wù),本文介紹解決MySQL8.0本地計算機上的MySQL服務(wù)啟動后停止沒有報告任何錯誤,感興趣的朋友一起看看吧2025-03-03
MySQL學(xué)習(xí)之?dāng)?shù)據(jù)更新操作詳解
這篇文章我們將學(xué)習(xí)一下用于數(shù)據(jù)更改的 “UPDATE” 語句, “UPDATE” 語句也是屬于 DML 這一類數(shù)據(jù)庫操作語言,感興趣的可以了解一下2022-08-08
EXCEL數(shù)據(jù)上傳到SQL SERVER中的簡單實現(xiàn)方法
以下是對EXCEL數(shù)據(jù)上傳到SQL SERVER中的簡單實現(xiàn)方法進行了詳細的分析介紹,需要的朋友可以過來參考下2013-08-08
Windows下安裝MySQL 5.7.17壓縮版中遇到的坑
最近發(fā)現(xiàn)原來好端端的MySQL突然間不能用了,無奈只能重新下載了最新的MySQL 5.7.17 Community 壓縮版 for Windows 64-bit。但在安裝過程中遇到了一些意外的問題,通過查找相關(guān)資料也解決了,所以想著總結(jié)出來,方便需要的朋友們可以參考借鑒,下面來一起看看吧。2017-01-01
mysql_connect(): Connection using old (pre-4.1.1) authentica
MySQL錯誤提示:Connection using old (pre-4.1.1) authentication protocol refused (client option ‘secure_auth’ enabled)解決辦法,需要的朋友可以參考下2014-04-04

