【问题标题】:Can't change MySQL AUTO_INCREMENT无法更改 MySQL AUTO_INCREMENT
【发布时间】:2014-04-17 12:18:17
【问题描述】:

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

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

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

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

当前的 auto_increment 值为 62029833。

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

ALTER TABLE 表名 AUTO_INCREMENT = 123; - - 没有运气。不会出错,就是不会粘住。

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

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

根据我的阅读,InnoDB 应该允许更改为 123,因为目前最高值为 122,但它表现得好像有更高的值。

只是为了测试,我还尝试将 auto_increment 更改为 1000、2000、122 等。没有任何问题。

有什么想法吗?

【问题讨论】:

    标签: mysql sql innodb


    【解决方案1】:

    在研究了一些之后,我发现了一个愚蠢的、不直观的解决方案。

    首先,从您的 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;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-11
      • 2021-12-04
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 2015-03-09
      • 2011-01-18
      • 2013-09-06
      相关资源
      最近更新 更多