2013-03-25 66 views
2

今天我發現auto_increment這幾個表的值都重置爲0.爲什麼?爲什麼MySQL表auto_increment被重置爲0?

  • 滑軌2.3.x版本
  • 的MySQL 5.0.x的

信息:

  • 表通常是空的(行被創建,然後刪除)
  • 服務器是init 6

該應用程序取決於auto_increment id,所以我想知道防止這種情況再次發生。

回答

3

讓我猜你是在使用InnoDB。

InnoDB存儲引擎stores the auto increment count in memory;它在MySQL重新啓動時被重置。

解決方案是將最高值存儲在某個表的某個位置,並在系統啓動時將其恢復。或者,根據您的使用情況,您可能會發現保留單個MyISAM表格以提供AUTO_INCREMENT值是有用的。

你可以找到一個彙編fun facts about AUTO_INCREMENT here

+0

是的,它是InnoDB。我可以通過將表格從InnoDB轉換爲MyISAM來解決問題嗎? – ohho 2013-03-25 10:54:02

+0

@ohho,你可以,但是你會失去InnoDB和MyISAM沒有的所有功能,比如支持事務和參照完整性。我不知道你是否使用這些。 – Joni 2013-03-25 12:17:17

+0

非常感謝您的信息和解釋。我將審查代碼並據此進行。 – ohho 2013-03-25 13:17:56