高学平的网络日志

  • 编程语言
    • PHP服务器脚本
    • Java编程语言
    • Python程序设计
  • 移动开发
    • Android开发
    • IOS开发
  • 架构运维
  • 数据库技术
  • 前端设计
  • 胡言乱语
  • AI
  • 关于我

MySQL issues

  • Blackford
  • 2019-04-22
  • 0

mysql Invalid default value for

建表的时候,如果设置datetime字段为not null,默认值为0000-00-00 00 00:00:00,就会报错mysql Invalid default value for,这是因为在mysql5.6+的版本中,在strict模式下,不允在日期中出现类似这种值:'0000-00-00'。你可以运行这条命令 show variables like 'sql_mode'; 来查看sql_mode,如果出现NO_ZERO_IN_DATE,那么就是不允许上述情况了。粗暴的解决办法可以设置sql_mode允许出现这种零值日期的出现,或者在IGNORE 模式下建表,但是不建议。有几个解决方案

去掉默认值,改为`add_time` datetime DEFAULT NULL,

把datetime改为timestamp,`add_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP。

如果要允许这种零日期的值为默认值,可以禁用no_zero_date

set GLOBAL sql_mode ='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION ';

有时候通过命令行设置不生效,可以通过配置文件设置

sql_mode=ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION



© 2023 高学平的网络日志
Theme by Wing
  • {{ item.name }}
  • {{ item.name }}