簡體   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