MySQL #1067 – Invalid default value for ‘post_date’

datetime 的預設值設定為 0000-00-00 00:00:00 在舊版本沒問題,但在MySQL5.7後會出現 錯誤,主要原因從 MySQL 5.7 開始,SQL 模式預設為 NO_ZERO_DATE ,需禁用此限制。本文提供兩種解法:

Invalid default value for 'xxxx'

方法一、

先將欄位預設值設定為NULL:

ALTER TABLE mytable MODIFY COLUMN field DATETIME NULL;

再更新預設值

ALTER TABLE `mytable` CHANGE `field` `field` DATETIME NULL DEFAULT '0000-00-00 00:00:00'; 

方法二、

先執行關閉 NO_ZERO_DATE 模式

SET global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

就可以順利執行

ALTER TABLE `mytable` CHANGE `field` `field` DATETIME NULL DEFAULT '0000-00-00 00:00:00'; 

https://stackoverflow.com/a/37696251/6784662
https://stackoverflow.com/a/32829623

如果文章對您很有幫助
請我喝杯咖啡吧

Bitcoin 比特幣錢包:

38ieWXhURt27br9XrDoCeo4eruzKyi8QKs



ann71727

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料