我有一个包含 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
有人有想法吗?
原文由 Sander Declerck 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果表包含 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 找到。