1
簡版:我可以通過編程方式更新表上的auto_increment值嗎?我試圖通過mysql init_file來做到這一點,所以它在啓動時發生,但我沒有看到它的工作。更新InnoDB表中的auto_increment值
USE theDb;
SELECT max(maxid) FROM (SELECT max(RegistrationId)+1 maxid FROM Registration
UNION
SELECT max(RegistrationId)+1 maxid FROM RegistrationArchive) t into @maxId;
ALTER TABLE Registration [email protected];
加長版: 我有InnoDB表MySQL數據庫。一個表(持有註冊信息)有一個自動增量列,當一行被處理時,它被複制到第二個存檔表並從第一個表中刪除。歸檔表沒有自動增量列。 (順便說一下,不是我的設計...)
問題是,當數據庫由於某種原因(很少發生)重新啓動時,第一個表會重新計算下一個增量值 - InnoDB的一個功能。該表通常爲空或非常小,計算出的下一個增量將對應於已經使用且位於歸檔表中的ID。數據被移動到歸檔正常,但隨後的過程不能正常工作。
目前的自動遞增存儲在'information_schema.tables.auto_increment'。但我認爲你的SQL只是更新了這個值,所以如果一個不起作用,另一個可能不會。但你可以試試看。 – Barmar
我能夠直接在代碼中執行此操作,但仍未使用init_file。我可以忍受這一點。至少在代碼中,版本控制已經到位。 – eflat
聽起來像這樣的問題是,在初始化文件執行後重置自動增量。 – Barmar