繁体   English   中英

无法更改MySQL AUTO_INCREMENT

[英]Can't change MySQL AUTO_INCREMENT

我正在将表从使用软件生成的ID更新为MySQL auto_increment ID的工作。

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

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

现在,我尝试更新auto_increment值,以便下一个插入为123。

当前的auto_increment值为62029833。

到目前为止,我已经尝试过:

ALTER TABLE tableName AUTO_INCREMENT = 123; - - 没运气。 没有错误,只是不粘。

INSERT INTO tableName(ID)VALUES(123); 从tableName删除,其中ID = 123; ---仍然没有运气

如果有其他方法,我想避免将表截断。

根据我的阅读,InnoDB应该允许将值更改为123,因为当前的最大值是122,但是它的作用好像是有一个更高的值。

为了测试,我还尝试将auto_increment更改为1000、2000、122等。

有任何想法吗?

经过更多的工作之后,我发现了一个愚蠢的,非直觉的解决方案。

首先,从您的ID列中删除AUTO_INCREMENT 我检查了外键,因此必须运行:

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

接下来,更新AUTO_INCREMENT值:

ALTER TABLE 'warehouse'.'addresses' AUTO_INCREMENT = 123;

最后,重新添加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;

希望这可以帮助一些可怜的灵魂!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM