[英]Unable to reset AUTO_INCREMENT in MySQL?
我在MySQL中有一個表,該表具有997653行,但是刪除了幾行后,現在是994332行。 但是,ID列的最后一個數字仍然是997653。如何重置它以重新計數列?
我已經嘗試過ALTER TABLE foo AUTO_INCREMENT=1;
但這沒有用。
這是重新播種的正確語法,但是您永遠不應重新設定auto_increment
列值。 是的,一旦刪除行, auto_increment
值將繼續使用下一個值,但這不會對您的表或對該表進行的查詢產生任何影響。
如果有問題,您甚至可以考慮執行軟刪除,而不是執行硬delete from...
語句中delete from...
如果表引擎是InnoDB,那么足以重啟MySQL服務(如果在您的設置中可能的話)。
InnoDB表引擎不在任何地方存儲自動增量值。 服務器啟動時,它將查找表中存在的最大值(這很容易, AUTO_INCREMENT
列始終是表的PK
),對其進行遞增,這是它在下一個INSERT
上使用的新值。
在文檔中對此進行了解釋:
如果為InnoDB表指定
AUTO_INCREMENT
列,則InnoDB數據字典中的表句柄將包含一個稱為自動增量計數器的特殊計數器,該計數器用於為該列分配新值。 該計數器僅存儲在主存儲器中,而不存儲在磁盤上。要在服務器重啟后初始化自動遞增計數器, InnoDB在包含
AUTO_INCREMENT
列的表中的第一個插入處執行以下語句的等效項。SELECT MAX(ai_col) FROM table_name FOR UPDATE;
InnoDB遞增該語句檢索的值,並將其分配給表的列和自動遞增計數器。 默認情況下,該值增加
1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.