【开发日记】MySQL TIMESTAMP 类型建表异常

MySQL TIMESTAMP 类型建表异常

建表报错信息

incalid default value for 'xxx'

建表语句

CREATE TABLE  `表名`...
字段名 TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00' ,
...

报错原因

MySQL的sql_mode参数会影响对日期时间的处理方式。如果NO_ZERO_DATE或者STRICT_TRANS_TABLES模式被启用,那么默认值'0000-00-00 00:00:00'将被认为是无效的。

因此,在这些模式下,将默认值设为'0000-00-00 00:00:00'会导致错误。

解决方式

① 调整默认值

将建表语句改为如下所示,表示默认值为当前时间戳。

CREATE TABLE  `表名`...
字段名 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
...

将建表语句改为如下所示,表示默认值为NULL。

CREATE TABLE  `表名`...
字段名 TIMESTAMP NULL DEFAULT NULL,
...
② 调整sql_mode参数

修改sql_mode参数值为ALLOW_INVALID_DATES,表示不对无效的日期进行严格的检查,从而接受一些看似无效的日期值。

调整sql_mode参数有两种方式,分别为会话级别配置和全局级别配置。

会话级别配置只对当前会话有效,sql如下:

SET sql_mode = 'ALLOW_INVALID_DATES';

全局级别配置需要修改MySQL的配置文件,并且需要修改后重启MySQL服务,MySQL配置文件通常是my.cnfmy.ini,将一下内容添加到配置文件:

[mysqld]
sql_mode = 'ALLOW_INVALID_DATES'
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值