一、問題1
問題描述:
今日加入創建時間和修改時間,並設置為默認CURRENT_TIMESTAMP時,出現錯誤,指向sql中的datetime字段,查了一下,發現是版本問題
立馬查詢自己的MySQL版本,發現是5.5.40的,
datetime設置默認為CURRENT_TIMESTAMP時,需要在5.6版本以上才可以
解決方案=
還是老實用:timestamp類型,去設置默認值為當前時間:CURRENT_TIMESTAMP吧
二、問題2
以為應該新建成功了 又來了一個報錯,也是版本問題,這個限制在后續版本中取消了
主要問題:在MySQL 5.6.5版本之前,是只能有一列能夠在初始化的時候或者被更新的時候自動設置為CURRENT_TIMESTAMP的值
問題描述:
在利用MySQL語句建立表結構時出現了Error Code : 1293
Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause錯誤
其建表語句為:
CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主鍵ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年齡', email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱', gmt_create timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間', gmt_update timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '郵箱',
PRIMARY KEY (id)
);
錯誤原因:在創建表結構時有且只有一個可以在“創建時間”或者“修改時間”上時帶上CURRENT_TIMESTAMP
解決辦法:
只讓一個TIMESTAMP列在設置默認值或更新時帶上CURRENT_TIMESTAMP
我這里選擇了“創建時間”默認,修改時間就沒有默認了,
CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主鍵ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年齡', email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱', create_time timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '郵箱', update_time timestamp COMMENT '郵箱', PRIMARY KEY (id) );
三、問題3
是關於數據庫中時間時區的時差的問題
問題描述
默認值為CURRENT_TIMESTAMP 與實際時間相差8小時
解決方案
-- 設置全局
set @@global.time_zone = '+08:00';
-- 立即刷新數據庫 flush privileges;