msyql使用 default current_timestamp报错

记忆旅途 2017-07-16 08:59:00
错误信息:
ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause:
sql语句:
CREATE TABLE sckill (
seckill_id BIGINT NOT NULL AUTO_INCREMENT
COMMENT '商品库存id',
name VARCHAR(120) NOT NULL
COMMENT '商品名称',
number INT NOT NULL
COMMENT '库存数量',
start_time TIMESTAMP NOT NULL
COMMENT '秒杀开始时间',
end_time TIMESTAMP NOT NULL
COMMENT '秒杀结束时间',
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
COMMENT '创建时间',
PRIMARY KEY (seckill_id),
KEY idx_start_time(start_time),
KEY idx_end_time(end_time),
KEY idx_create_time(create_time)
)
ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8
COMMENT '秒杀库存表';

错误信息说的是timestamp只能有一列为current_timestamp,但语句中确实只有一列,为什么还报错?
...全文
2058 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2017-07-18
  • 打赏
  • 举报
回复
老版本还有这个破规矩啊
凡迪 2017-07-18
  • 打赏
  • 举报
回复
把 create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 这条语句放在start_time 前面就可以了, 原因是mysql会默认为表中的第一个timestamp字段(且设置了NOT NULL)隐式设置DEFAULAT CURRENT_TIMESTAMP。所以说上例那样的设置实际上等同于设置了两个CURRENT_TIMESTAMP,因此而报错,调整之后就可以了。
wsy24680 2017-07-18
  • 打赏
  • 举报
回复
貌似5.5之前的版本存在这个问题 之后就没了
zjcxc 2017-07-18
  • 打赏
  • 举报
回复
用的什么版本? 现在的版本应该没这个限制,而且也测试过你的语句确实没问题

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧