我正在努力将表格从使用软件生成的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等。没有什么可以坚持。
有什么想法吗?
答案 0 :(得分:6)
在进行了更多工作之后,我发现了一个愚蠢的,非直观的解决方案。
首先,从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;
希望这有助于一些可怜的灵魂!