MySQL中CURRENT_TIMESTAMP的使用方式
CURRENT_TIMESTAMP的使用
眾所周知,MySQL的日期類型可以使用CURRENT_TIMESTAMP來指定默認值,但是這個跟MySQL的版本及日期的具體類型有關(guān),只有5.6之后的版本才能使用CURRENT_TIMESTAMP作為DATETIME的默認值。
例如:
ALTER TABLE t_user ADD update_time DATETIME DEFAULT CURRENT_TIMESTAMP
在5.6之前的版本,使用CURRENT_TIMESTAMP作為默認值時,就會出現(xiàn)下面的錯誤
[Err] 1067 - Invalid default value for 'update_time'
在MySQL 5.6.5版本之前,DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP只適用于TIMESTAMP,而且一張表中,最多允許一個TIMESTAMP字段采用該特性。 從MySQL 5.6.5開始, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP同時適用于TIMESTAMP和DATETIME,且不限制數(shù)量。
timestamp使用CURRENT_TIMESTAMP報錯
項目出現(xiàn)如下錯誤:
Error updating database.
Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'createTime' cannot be null
數(shù)據(jù)模型如下:
/* 創(chuàng)建時間不可為空*/ createTime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間' , /* 更新時間不可為空*/ updateTime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間' ,
經(jīng)過一系列的問題排查,定位到是因為不同版本的MySQL數(shù)據(jù)庫全局變量“explicit_defaults_for_timestamp”的問題。
-- 查看explicit_defaults_for_timestamp默認值 SHOW GLOBAL VARIABLES LIKE "explicit_defaults_for_timestamp"; -- 修改explicit_defaults_for_timestamp默認值 SET @@global.explicit_defaults_for_timestamp=OFF;
參數(shù)值為"ON"的情況:
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
php基礎(chǔ)之連接mysql數(shù)據(jù)庫和查詢數(shù)據(jù)
這篇文章主要介紹了php連接mysql數(shù)據(jù)庫和查詢數(shù)據(jù)的方法和示例,需要的朋友可以參考下2014-08-08MySQL 自定義函數(shù)CREATE FUNCTION示例
本節(jié)主要介紹了MySQL 自定義函數(shù)CREATE FUNCTION,下面是示例代碼,需要的朋友可以參考下2014-07-07MySQL函數(shù)CONCAT、CONCAT_WS、GROUP_CONCAT用法詳解
這篇文章主要介紹了MySQL函數(shù)CONCAT、CONCAT_WS、GROUP_CONCAT用法詳解,CONCAT 函數(shù)用于將兩個字符串連接為一個字符串,本文通過實例代碼詳細講解,需要的朋友可以參考下2023-02-02mysql?8.0.29?winx64.zip安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了mysql?8.0.29?winx64.zip安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06CentOS6.7 mysql5.6.33修改數(shù)據(jù)文件位置的方法
mysql存放的數(shù)據(jù)文件,分區(qū)容量較小,目前已經(jīng)滿,導(dǎo)致mysql連接不上,怎么解決呢?下面小編給大家分享CentOS6.7 mysql5.6.33修改數(shù)據(jù)文件位置的方法,一起看看吧2017-06-06MySQL兩種表存儲結(jié)構(gòu)MyISAM和InnoDB的性能比較測試
MySQL兩種表存儲結(jié)構(gòu)MyISAM和InnoDB的性能比較測試...2006-12-12mysql判斷當(dāng)前時間是否在開始與結(jié)束時間之間且開始與結(jié)束時間允許為空
這篇文章主要介紹了mysql判斷當(dāng)前時間是否在開始與結(jié)束時間之間且開始與結(jié)束時間允許為空,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09