mysql5.7 创建新表时提示时间戳非法

# 背景

mysql版本5.7.8,需要创建新表,研发提供的sql文件,执行后报错如下:

ERROR 1067 (42000): Invalid default value for 'deleted_at'

就猜测到时因为5.7版本的mysql默认的时间戳不允许输入0000-00-00 00:00:00这种格式,之前碰到过类似问题,需要修改配置

查看了研发提供的sql文件,果真如此:

‘create_at` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '注册时间',

 

# 解决

1. 不希望修改配置文件,通过修改sql_model就可以了的,这种对新建表生效

SELECT @@sql_mode;

可查看sql_model,其中NO_ZERO_IN_DATE,NO_ZERO_DATE就是导致5.7+版本无法输入0的时间戳

NO_ZERO_IN_DATE:在严格模式下,不允许日期和月份为零 
NO_ZERO_DATE:设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

2. 修改sql_model

SET @@sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

去掉上面两个即可

3. 执行原来的sql文件,成功

虽千万人,吾往矣!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值