MySQL 5.6 中 TIMESTAMP 的變化分析
在MySQL 5.6.6之前,TIMESTAMP的默認(rèn)行為:
■TIMESTAMP列如果沒有明確聲明NULL屬性,默認(rèn)為NOT NULL。(而其他數(shù)據(jù)類型,如果沒有顯示聲明為NOT NULL,則允許NULL值。)設(shè)置TIMESTAMP的列值為NULL,會(huì)自動(dòng)存儲(chǔ)為當(dāng)前timestamp。
■表中的第一個(gè)TIMESTAMP列,如果沒有聲明NULL屬性、DEFAULT或者 ON UPDATE,會(huì)自動(dòng)分配 DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP 屬性。
■表中第二個(gè)TIMESTAMP列,如果沒有聲明為NULL或者DEFAULT子句,默認(rèn)自動(dòng)分配'0000-00-00 00:00:00′。插入行時(shí)沒有指明改列的值,該列默認(rèn)分配'0000-00-00 00:00:00′,且沒有警告。


2列TIMESTAMP未聲明為NULL的默認(rèn)行為
從MySQL5.6.6開始這種默認(rèn)設(shè)置的方法被廢棄了。在MySQL啟動(dòng)時(shí)會(huì)出現(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后錯(cuò)誤消失,這時(shí)TIMESTAMP的行為如下:
■TIMESTAMP如果沒有顯示聲明NOT NULL,是允許NULL值的,可以直接設(shè)置改列為NULL,而沒有默認(rèn)填充行為。
■TIMESTAMP不會(huì)默認(rèn)分配DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP屬性。

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

TIMESTAMP 默認(rèn)設(shè)置為NOT NULL
Note:
以上內(nèi)容和存儲(chǔ)引擎選擇無關(guān)。
相關(guān)文章
mysql group_concat()函數(shù)用法總結(jié)
這篇文章主要介紹了mysql group_concat()函數(shù)用法,結(jié)合實(shí)例形式較為詳細(xì)的group_concat()函數(shù)的功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-06-06
解決MySQL8.0本地計(jì)算機(jī)上的MySQL服務(wù)啟動(dòng)后停止沒有報(bào)告任何錯(cuò)誤的問題(最新推薦)
解決MySQL服務(wù)啟動(dòng)后停止沒有報(bào)告任何錯(cuò)誤的方法包括修改my.ini文件編碼為ANSI、修正MySQL服務(wù)可執(zhí)行文件的路徑以及關(guān)閉系統(tǒng)管理中的MySQL80服務(wù),本文介紹解決MySQL8.0本地計(jì)算機(jī)上的MySQL服務(wù)啟動(dòng)后停止沒有報(bào)告任何錯(cuò)誤,感興趣的朋友一起看看吧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中的簡單實(shí)現(xiàn)方法
以下是對(duì)EXCEL數(shù)據(jù)上傳到SQL SERVER中的簡單實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下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錯(cuò)誤提示:Connection using old (pre-4.1.1) authentication protocol refused (client option ‘secure_auth’ enabled)解決辦法,需要的朋友可以參考下2014-04-04

