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

ERROR 1067 (42000): Invalid default value for 'birth'

create table test3(
star varchar(20) not null default '',
birth date not null default '0000-00-00'
)engine myisam charset utf8;

錯誤:
ERROR 1067 (42000): Invalid default value for ‘birth’

原因:
原文

是因為sql_mode中的NO_ZEROR_DATE導制的,在strict mode中不允許’0000-00-00’作為合法日期

使用下面的命令檢視sql_mode

mysql>show variables like ‘sql_mode’;

±--------------±------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
±--------------±------------------------------------------------------------------------------------------------------------------------------------------+
| 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 |
±--------------±------------------------------------------------------------------------------------------------------------------------------------------+

將上面的NO_ZERO_DATE改為下面的 ALLOW_INVALID_DATES

mysql> set sql_mode=‘ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;

上面的設定是臨時設定,在重新登陸後,該設定又恢復為NO_ZERO_DATE

永久修改辦法:

修改my.cnf檔案,在[mysqld]中新增

sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

重啟mysql


作者:藍星花
來源:CSDN
原文:https://blog.csdn.net/m0_37499059/article/details/79186829
版權宣告:本文為博主原創文章,轉載請附上博文連結!

刪除線格式
stackoverflow

Simply, before you run any statements put this in the first line:

SET sql_mode = '';
shareimprove this answer