前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【开发日记】MySQL TIMESTAMP 类型建表异常

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

作者头像
全栈开发日记
发布2023-09-14 15:11:35
1610
发布2023-09-14 15:11:35
举报
文章被收录于专栏:全栈开发日记

MySQL TIMESTAMP 类型建表异常

建表报错信息

代码语言:javascript
复制
incalid default value for 'xxx'

建表语句

代码语言:javascript
复制
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'会导致错误。

解决方式

① 调整默认值

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

代码语言:javascript
复制
CREATE TABLE  `表名`(
...
字段名 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
...
)

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

代码语言:javascript
复制
CREATE TABLE  `表名`(
...
字段名 TIMESTAMP NULL DEFAULT NULL,
...
)
② 调整sql_mode参数

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

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

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

代码语言:javascript
复制
SET sql_mode = 'ALLOW_INVALID_DATES';

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

代码语言:javascript
复制
[mysqld]
sql_mode = 'ALLOW_INVALID_DATES'
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-12 12:59,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL TIMESTAMP 类型建表异常
    • 建表报错信息
      • 建表语句
        • 报错原因
          • 解决方式
            • ① 调整默认值
            • ② 调整sql_mode参数
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档