【踩坑】Mysql报错Invalid default value

前言

Mysql在创建表时,指定某个timestamp类型的默认值为0000-00-00 00:00:00时报错:ERROR 1067 (42000): Invalid default value for 'order_time'

原因

  • Mysql5.6以后sql_mode中多了一条NO_ZERO_DATE(不允许时间值全部为0)

解决问题

  • 重新配置sql_mode让它支持全部为0的时间值
1
mysql> set sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

报错

  • 再次报错:ERROR 1231 (42000): Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'

原因

  • Mysql8.0以上已经取消了NO_AUTO_CREATE_USER这个关键字

解决问题

  • 重新配置sql_mode并删掉NO_AUTO_CREATE_USER关键字
1
mysql> set sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION";

完成

参考文献

CSDN——linmengmeng_1314
简书——神经电泳实现师
CSDN——Dreamboy_w
简书——丶Rainbow丨