2011-11-13 34 views
5

它一直工作到現在,但是當我重新啓動服務時,數據庫丟失了我的表的自動增量值。這是肯定的,因爲我最近沒有修改我的表格。會是什麼呢?自動增量在每次服務重啓時都會復位爲0

+0

獲取您在數據庫中存儲的所有存儲過程和觸發器的列表。檢查它是否有可疑的事情。嘗試重新安裝服務器看看是否有幫助 –

+0

沒有觸發器,沒有程序,它只發生在服務重啓,它完美的工作,如果我截斷表,並重新開始。 – Chobeat

+0

通過服務重啓你的意思是你重新啓動mysql服務器? – Dimme

回答

2

這是記錄的行爲,它不是一個錯誤。
當服務器啓動時,它會通過每個(InnoDB)表確定新的auto_increment值應該是什麼。從http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html

的InnoDB只要服務器運行使用內存自動增長計數器。如上所述,當 服務器停止並重新啓動時,InnoDB會重新初始化針對該表的第一個INSERT的每個表的計數器,如前所述。

當您部署導致表重建的DDL(如更改engine - 甚至將其更改爲與之前相同的值)時,它會執行類似操作。

+0

這並不能解釋爲什麼它會爲零。 –

0

ALTER TABLE table_name ENGINE = MyISAM

適用於我。 InnoDB將AI存儲在內存中,所以當mysql服務器重新啓動時,它會重置爲當前行數+ 1。所以如果你重新啓動服務器時你的表是空的,它將被重置爲1.

另一方面,MyISAM已經很完善了。

相關問題