mysql中時間字段設置遇到的問題
mysql中時間字段設置問題
案例【一】
今天寫數(shù)據(jù)庫腳本,創(chuàng)建數(shù)據(jù)庫時,有一個字段是datetime類型的,想要設置默認時間為當前時間,
于是有了如下代碼:
registerDate datetime NOT NULL DEFAULT NOW() COMMENT '注冊時間'
執(zhí)行之后報錯
Error Code: 1067. Invalid default value for 'registerDate'
PS:在mysql 5.6中,這種寫法OK,之前的版本不支持這樣的寫法。
案例【二】
mysql一般在設置時間的時候也常用時間戳。timestamp類型
在執(zhí)行mysql數(shù)據(jù)庫時報錯
CREATE TABLE `advert_schedule_time` ( `advert_id` int(11) NOT NULL DEFAULT '0' COMMENT '廣告id', `stime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '開始時間', `etime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '結束時間', `times` int(11) NOT NULL DEFAULT '0' COMMENT '投放次數(shù)', UNIQUE KEY `adverttime` (`advert_id`,`stime`,`etime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '廣告時間排期表';
首先用下面的命令看下sql_mode
show variables like 'sql_mode';
如果查詢的結果如下:
ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
如果結果中含有NO_ZERO_IN_DATE, NO_ZERO_DATE
則執(zhí)行下面的命令:
set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
mysql時間類型字段自動更新設置
alter table user modify column update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新時間'; alter table 表名 modify column 字段名 類型 NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘注釋';
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
mysql 5.7.20\5.7.21 免安裝版安裝配置教程
這篇文章主要為大家詳細介紹了mysql5.7.20和mysql5.7.21免安裝版安裝配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02
MySQL?移動數(shù)據(jù)目錄后啟動失敗問題解決
由于安裝數(shù)據(jù)庫時將MySQL的數(shù)據(jù)目錄放在了根目錄下,現(xiàn)在存儲空間不足,遇到這個問題如何解決呢,下面小編給大家?guī)砹薽ysql移動數(shù)據(jù)目錄啟動失敗解決方法,感興趣的朋友一起看看吧2023-04-04
MySQL重啟之后無法寫入數(shù)據(jù)的問題排查及解決
客戶在給系統(tǒng)打補丁之后需要重啟服務器,數(shù)據(jù)庫在重啟之后,read_only 的設置與標準配置 文件中不一致,導致主庫在啟動之后無法按照預期寫入,所以本文給大家介紹了MySQL重啟之后無法寫入數(shù)據(jù)的問題排查及解決,需要的朋友可以參考下2024-05-05

