1. 程式人生 > >MySQL:ERROR 1067 (42000): Invalid default value for 'end_time'

MySQL:ERROR 1067 (42000): Invalid default value for 'end_time'

本文轉自這裡     https://www.cnblogs.com/jinjiyese153/p/7300510.html


2.錯誤分析

  表中的第一個TIMESTAMP列(如果未宣告為NULL或顯示DEFAULT或ON UPDATE子句)將自動分配DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP屬性

  第一個之後的TIMESTAMP列(如果未宣告為NULL或顯示DEFAULT子句)將自動分配DEFAULT '0000-00-00 00:00:00'(零時間戳),這不滿足sql_mode中的NO_ZERO_DATE而報錯。

  sql_mode有兩種,一種是空值,一種是嚴格模式,會給出很多預設設定。在MySQL5.7之後預設使用嚴格模式。

    NO_ZERO_DATE:若設定該值,MySQL資料庫不允許插入零日期,插入零日期會丟擲錯誤而不是警告。

3.解決方式

  方式一:先執行select @@sql_mode,

               複製查詢出來的值並將其中的NO_ZERO_DATE刪除,然後執行set sql_mode = '修改後的值'。此方法只在當前會話中生效

  方式二:先執行select @@global.sql_mode,複製查詢出來的值並將其中的NO_ZERO_DATE刪除,然後執行set global sql_mode = '修改後的值'。

      此方法在當前服務中生效,重新MySQL服務後失效