1肉微、無論時間字段的類型是 timestamp 還是 datetime,設(shè)置默認值為 '0000-00-00 00:00:00'時會報錯,默認值無效
2、原因糙麦,在MySQL的sql_mode中配置不允許其中包含字符0
3妇蛀、解決方法
(1)用root賬戶登錄MySQL
(2)查看全局的sql_mode配置
select @@global.sql_mode;
查詢結(jié)果中有NO_ZERO_DATE和NO_ZERO_IN_DATE主届,就是我們?nèi)掌诓荒茉O(shè)為0000-00-00的原因了
(3)修改全局的sql_mode配置值
set @@global.sql_mode=(select replace(@@sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE',''));?
替換其中的NO_ZERO_IN_DATE,NO_ZERO_DATE為空字符串
(4)此時脆霎,不需要重啟MySQL服務(wù)器,但是需要關(guān)閉Navicat客戶端該數(shù)據(jù)庫的連接滞项,再打開狭归。此時,就可以設(shè)置時間類型字段默認值為'0000-00-00 00:00:00'了文判。
(5)特別注意:
這種修改配置只是修改了目前的狀態(tài)过椎,如果重新啟動MySQL服務(wù),那么配置就丟失了戏仓。
mysql.server status
mysql.server start
mysql.server stop
找到對應(yīng)MySQL的配置文件my.cnf疚宇,添加下面的配置值
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
重啟MySQL服務(wù)后,進入查看發(fā)現(xiàn)該配置值也修改了赏殃。