mysql incorrect datetime value '0000-0-0 00:00:00' for column

1. 問(wèn)題說(shuō)明

mysql incorrect datetime value '0000-0-0 00:00:00' for column
或者
this is incompatible with sql_mode=only_full_group_by

2. 原因

第一種情況是因?yàn)?code>mysql使用no_zero_date sql模式,所以不允許將0000-00-00保存為“偽日期”
第二種情況是因?yàn)?code>mysql使用ONLY_FULL_GROUP_BY模式,所以如果沒(méi)有字段在 target list 以及 group by 字段中同時(shí)出現(xiàn),那么 sql 就認(rèn)為此條語(yǔ)句是不合法的,就會(huì)拋出錯(cuò)誤。

3. 解決方法

1. 命令解決(mysql重啟后失效)

show variables like 'sql_mode';

variable_name value
sql_mode strict_trans_tables,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution

找到其中需要去掉的sql_mode模式,如no_zero_date sql

set global sql_mode='strict_trans_tables,no_zero_in_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution';
2. 修改my.ini文件

需修改mysql配置文件,通過(guò)手動(dòng)添加sql_mode的方式強(qiáng)制指定不需要的屬性,

mysqld下面添加代碼:

sql_mode=strict_trans_tables,no_zero_in_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution

注:

  1. 不同的系統(tǒng),mysql 的配置文件名以及路徑不同
  2. Mac或Linux文件 /etc/my.cnf
  3. windows 在數(shù)據(jù)庫(kù)安裝目錄下的 my.ini
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容