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 年