Mysql Error:Invalid default value for 'date' 解决方案

原因是因为设置了 NO_ZERO_IN_DATE 

查看当前数据库全局sql_mode的值

select @@global.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
更新全局sql_mode的值,去除原值当中的 NO_ZERO_IN_DATE、NO_ZERO_DATE
set @@global.sql_mode = (select replace(@@global.sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE',''));
  • NO_ZERO_IN_DATE:
    在严格模式,日期中不接受月或日部分为0。如果使用IGNORE选项,插入日期'0000-00-00',在非严格模式,可以接受该日期,但会生成警告。
  • NO_ZERO_DATE:
    在严格模式, '0000-00-00'为不合法日期。如果使用IGNORE选项插入零日期,在非严格模式,可以接受该日期,但会生成警告。
补充:以上解决方案当重启mysql服务后将失效,若希望永久生效,则可在mysql.ini 配置文件中配置以下内容后重启mysql服务
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

参考文章:

猜你喜欢

转载自www.cnblogs.com/gjh99/p/12036452.html