一尘不染

MySQL无法使列auto_increment

sql

我有一个包含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

有人知道吗?


阅读 172

收藏
2021-03-17

共1个答案

一尘不染

如果表包含一个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上找到更多详细信息。

2021-03-17