mysql重新设置主键生成策略为auto_increment时报错:resulting in duplicate entry '1' for key 'PRIM

1,351 阅读1分钟
现在有一个标签表,里面已经填入了一些数据了,想把主键生成策略改成自增的:

 ALTER TABLE `tags` CHANGE COLUMN `Id` `Id` INT(11) NOT NULL AUTO_INCREMENT 

但是发现改不了,报错:

 ERROR 1062: ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1' for key 'PRIMARY' 

可是当前表中数据的主键并没有重复的呀,所以原因到底是什么呢?

 这种情况的发生,是因为表中包含了 ID 为0(或负值)的记录。 需要更新这些记录,将ID换为正值,才可以在该列上设置 auto_increment。当然,设置好自增策略后,如果你想的话,还可以继续将ID值改为0(或负值)。