我有一个包含4列的“ Bestelling”表:“ Id”(PK),“ KlantId”,“ Datum”,“ BestellingsTypeId”,现在我想使列ID为auto_increment,但是,当我尝试这样做时,我得到这个错误:
ERROR 1062: ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1' for key 'PRIMARY' SQL Statement: ALTER TABLE `aafest`.`aafest_bestelling` CHANGE COLUMN `Id` `Id` INT(11) NOT NULL AUTO_INCREMENT ERROR: Error when running failback script. Details follow. ERROR 1046: No database selected SQL Statement: CREATE TABLE `aafest_bestelling` ( `Id` int(11) NOT NULL, `KlantId` int(11) DEFAULT NULL, `Datum` date DEFAULT NULL, `BestellingstypeId` int(11) DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1
有人知道吗?
如果表包含一个ID为0(或负数)的现有记录,则会发生这种情况。更新所有现有记录以使用正值将允许在该列上设置auto_increment。
编辑:有人问那0是如何到达那里的。为了澄清起见,《 MySQL参考手册》指出:“对于数字类型,默认值为0,但对于用AUTO_INCREMENT属性声明的整数或浮点类型,默认值为序列中的下一个值。” 因此,如果在启用auto_increment之前对表执行插入操作时未提供数值列的值,则在插入过程中将使用默认值0。可以在https://dev.mysql.com/doc/refman/5.0/en/data- type-defaults.html上找到更多详细信息。