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

2022-06-20 10:44:21 +08:00
 szq8014
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 年

621 次点击
所在节点    全球工单系统
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/860798

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX