无法更改MySQL AUTO_INCREMENT

Jus*_*ieu 2 mysql sql innodb

我正在使用软件生成的ID更新表到MySQL auto_increment ID.

ID字段是int(10),数据库类型是InnoDB

将ID更新为顺序后,从1开始,新的最高ID为122.以前,最高ID为62029832

现在我正在尝试更新auto_increment值,以便下一个插入是123.

当前的auto_increment值为62029833.

到目前为止,我尝试过:

ALTER TABLE tableName AUTO_INCREMENT = 123; - - 没运气.没有错误,只是不坚持.

INSERT INTO tableName(ID)VALUES(123); DELETE FROM tableName WHERE ID = 123; ---仍然没有运气

如果有另一种方法,我想避免截断表.

从我读过的内容来看,InnoDB应该允许更改为123,因为最高值当前为122,但它表现得好像有更高的值.

为了测试,我也尝试将auto_increment更改为1000,2000,122等.没有什么可以坚持的.

有任何想法吗?

Jus*_*ieu 7

在进行了更多工作后,我发现了一个愚蠢的,非直观的解决方案.

首先,AUTO_INCREMENT从ID列中删除.我有外键检查所以我必须运行:

SET FOREIGN_KEY_CHECKS = 0;
ALTER TABLE `warehouse`.`addresses`
    CHANGE COLUMN `aID` `aID` INT(10) UNSIGNED NOT NULL;
SET FOREIGN_KEY_CHECKS = 1;
Run Code Online (Sandbox Code Playgroud)

接下来,更新AUTO_INCREMENT值:

ALTER TABLE 'warehouse'.'addresses' AUTO_INCREMENT = 123;
Run Code Online (Sandbox Code Playgroud)

最后,重新添加AUTO_INCREMENT:

SET FOREIGN_KEY_CHECKS = 0;
ALTER TABLE `warehouse`.`addresses`
    CHANGE COLUMN `aID` `aID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
SET FOREIGN_KEY_CHECKS = 1;
Run Code Online (Sandbox Code Playgroud)

希望这有助于一些可怜的灵魂