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


© 版權聲明:本文為博主原創文章,轉載請注明出處

1.錯誤截圖

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服務后失效

  方法三:在mysql的安裝目錄下,打開my.inimy.cnf文件,新增 sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

      然后重啟mysql。

      此方法永久生效

 

參考:https://stackoverflow.com/questions/39545124/error-1067-42000-invalid-default-value-for-end-time


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM