MySQL timestamp問題處理

環(huán)境描述:

DB? :阿里云RDS?MySQL?5.7

問題描述:

timestamp(not?null)情況下插入null值,會(huì)自動(dòng)帶上current?timestamp:DEFAULT CURRENT_TIMESTAMP,這個(gè)和大部分的業(yè)務(wù)邏輯需求是相悖的。

5.5中:

在MySQL5.5版本中,TIMESTAMP特性

TIMESTAMP字段默認(rèn)為NOT NULL,如果你在定義“test_null_1 TIMESTAMP DEFAULT NULL” 會(huì)提升“ERROR 1067 (42000): Invalid default value for 'test_null_1'”。 可以指定為空 null ,“test_null_1 TIMESTAMP NULL" ,這時(shí)可以再添加語句改變默認(rèn)值。

如果不做特殊說明,同一個(gè)表中會(huì)對(duì)第一個(gè)TIMESTAMP字段設(shè)置DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP屬性,第二個(gè)字段設(shè)置DEFAULT '0000-00-00 00:00:00',如果對(duì)兩個(gè)字段都顯示指定“DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP”是會(huì)被告知“ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause”。

5.6中引入了引入了新的參數(shù),處理行為發(fā)生了變化:explicit_defaults_for_timestamp

如果該參數(shù)不開啟,則對(duì)timestamp NOT NULL插入NULL值,不報(bào)錯(cuò),無warning,插入后的值為當(dāng)前時(shí)間。

知道了這些怎么改就知道了。參數(shù)explicit_defaults_for_timestamp需要重啟生效。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容