MySql创建表时插入自动更新时间戳报错:SQL执行错误#1293:Incorrect table definition;there can be only one TIMESTAMP ...

最近学习慕课网的高并发课程时发现mysql创建表时报如下错误:

SQL执行错误#1293:Incorrect table definition;there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATA caluse.

MySql创建表时插入自动更新时间戳报错:SQL执行错误#1293:Incorrect table definition;there can be only one TIMESTAMP ..._第1张图片

翻译过来就是“在默认或更新时间戳时只能有一个时间戳列”,但检查下sql代码:

CREATE TABLE seckill(
    `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`)
)ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8

确实自己也只有一个”秒杀创建时间”用了自动更新时间戳,对这个报错表示很无语。。。

自己捣鼓半天发现在自动更新时间戳字段前所有有关时间戳的字段必须有默认值,或者直接把自动更新时间戳的字段移到最前面就行了,比如:

CREATE TABLE seckill(
	`seckill_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '商品库存id',
	`name` VARCHAR(120) NOT NULL COMMENT '商品名称',
	`number` INT NOT NULL COMMENT '库存数量',
	`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '秒杀创建时间',
	`start_time` TIMESTAMP NOT NULL COMMENT '秒杀开始时间',
	`end_time` TIMESTAMP NOT NULL COMMENT '秒杀结束' ,
	PRIMARY KEY (`seckill_id`)
)ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 

如果不满意还可以:

MySql创建表时插入自动更新时间戳报错:SQL执行错误#1293:Incorrect table definition;there can be only one TIMESTAMP ..._第2张图片

手动移到最后就行了(⊙o⊙)…

你可能感兴趣的:(MySql创建表时插入自动更新时间戳报错:SQL执行错误#1293:Incorrect table definition;there can be only one TIMESTAMP ...)