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