數據庫遇到的問題之“datetime設置默認為CURRENT_TIMESTAMP時報無效默認問題”和“時區問題”


一、問題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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM