mysql [Err] 1067 - Invalid default value for


出錯原因

mysql5.7版本引起的默認值不兼容的問題,同樣的問題在mysql8.0可能也會出現。

出問題的值有:
NO_ZERO_IN_DATE
在嚴格模式下,不允許日期和月份為零。

NO_ZERO_DATE
設置該值,mysql數據庫不允許插入零日期,插入零日期會拋出錯誤而不是警告。

ONLY_FULL_GROUP_BY
對於GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY中出現,那么這個SQL是不合法的,因為列不在GROUP BY從句中。

解決方式

方式一

執行select @@sql_mode,復制查詢出來的值並將其中的NO_ZERO_DATE刪除,然后執行set sql_mode = ‘修改后的值’

此方法只在當前會話中生效

方式二

執行select @@global.sql_mode,復制查詢出來的值並將其中的NO_ZERO_DATE刪除,然后執行set global sql_mode = ‘修改后的值’

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

方法三

在mysql的安裝目錄下,打開my.ini或my.cnf文件,在wamp下,MySQL 5.7里是沒有設置 SQL_MODE 的。

1.my.ini文件中找到 [mysqld]

2.如果沒有SQL_MODE,就添加,有就修改一下

sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"

或者

sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

最后重啟MySQL

service mysqld restart


免責聲明!

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



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