V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
szq8014
V2EX  ›  全球工单系统

阿里云 RDS-MySQL 8.0 日期处理有 BUG

  •  
  •   szq8014 · 2022-06-20 10:44:21 +08:00 · 667 次点击
    这是一个创建于 887 天前的主题,其中的信息可能已经有所发展或是发生改变。
    CREATE TABLE `xxx` (
     `id` INT(10) NOT NULL AUTO_INCREMENT,
     `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     `expire_time` TIMESTAMP NOT NULL COMMENT '超时时间',
     PRIMARY KEY (`id`) USING BTREE
    )
    COMMENT='test' COLLATE='utf8mb4_general_ci' ENGINE=InnoDB;
    
    /* SQL 错误( 1067 ):Invalid default value for 'expire_time' */
    

    有点奇怪,上面是最小复现的语句,在开源版的 MySQL 8.0 上是没有问题的,开的配置是一样(默认)的,

    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    
    

    目前来看触发的条件就是前面一句也是一个 TIMESTAMP 且后面修饰不一样就会出现,单独只有 expire_time 是没有问题的。

    (啊,虽然现在用 timestamp 不太合理,但是我觉得我现在这个项目可能活不到 2038 年

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2871 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:09 · PVG 22:09 · LAX 06:09 · JFK 09:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.