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


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(或负值)。