1. 程式人生 > >Mysql ERROR 1067: Invalid default value for ‘date’ 解決

Mysql ERROR 1067: Invalid default value for ‘date’ 解決

Mysql ERROR 1067: Invalid default value for ‘date’ 解決

首先簡單說下原因:

SQL_MODE 設定值的問題
windows下安裝的wamp 3.06 64bit版本,預設沒有設定這個值,坑叔呀

解決方式

以window中為例子
my.ini中找到[mysqld] 位置 ,修改sql_mode 的值,如果沒有則新增

[mysqld]
sql_mode=’ STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION’
重啟mysql 服務

解析

我這邊出現的問題,是因為mysql 5.7中預設並沒有設定sql_mode值;
經查詢

SELECT @@SQL_MODE ;
得出的值是:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
可以在這裡檢視每個值的說明 mysql的sql_mode合理設定.

出問題的值是:

NO_ZERO_IN_DATE:
在嚴格模式下,不允許日期和月份為零
NO_ZERO_DATE:
設定該值,mysql資料庫不允許插入零日期,插入零日期會丟擲錯誤而不是警告。
多說一句關於 sql_mode

ONLY_FULL_GROUP_BY
ONLY_FULL_GROUP_BY
對於GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY中出現,那麼這個SQL是不合法的,因為列不在GROUP BY從句中
如果設定了這個模式,基本上你的每一句sql文都要加上 group by 欄位了,否則就是不合法

預設設定的sql_mode
我上面的設定就挺好,其他的看具體需求

sql_mode=’STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION’

作者:懷遠黑太歲
來源:CSDN
原文:https://blog.csdn.net/zhanghw0917/article/details/70176168


版權宣告:本文為博主原創文章,轉載請附上博文連結!