2010-07-22 81 views
2

我遇到了一個真正的,真的很奇怪的問題與MySQL。mysql auto_increment由5?

我有一個主鍵「id」。它設置爲自動增量。問題是,第一項是從「3」開始的。每個新條目增加5,所以下一個條目的id是8,下一個是13,然後是18,依此類推。這很愚蠢。爲什麼不是隻增加1,就像它應該是?爲什麼它從3開始?

有一些設置我失蹤了嗎?我使用phpmyadmin,如果有幫助。

+0

phpMyAdmin的,不影響這個。 – 2010-07-22 20:44:27

回答

11

有應該是一個my.cnf配置:auto_increment_increment。它用於主 - 主服務器設置,以防止相同的密鑰被兩臺不同的服務器定義兩次。所以使用加上auto_increment_offset,它允許每個服務器始終生成唯一的ID ...

那麼,從什麼你所描述的,這聽起來像你有這樣的:

auto_increment_increment = 5 
auto_increment_offset = 3 
+0

+1:打我吧 – 2010-07-22 20:46:08

+0

我敢打賭,這是問題所在。太糟糕了,我無法訪問my.cnf文件。感謝您指點我正確的方向。我想我堅持這個...這裏希望我不會遇到任何奇怪的問題。 – nwalker85 2010-07-22 20:47:57

+1

那麼,基於http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html,它可以設置爲會話變量。所以你可以在每個連接開始時調用'SET SESSION auto_increment_increment = 1;'如果你真的想(但是要注意,如果複製正在進行,你可能會破壞事物)... – ircmaxell 2010-07-22 20:50:06

1

自動增量可能設置爲5.嘗試:

ALTER TABLE YourTable AUTO_INCREMENT = 1; 

可以檢索與當前設置:

SHOW TABLE STATUS LIKE 'YourTable' 

有關詳細信息,請參閱MySQL docs

+1

不可以...該表設置設置要使用的下一個值。它不能低於或等於表中已使用的最大密鑰。它與每次增加了多少字段無關(這是由'auto_increment_increment'變量處理的)。您發佈的內容的用途是,如果您因爲某些原因想要跳過一堆ID(如爲將來的擴展節省空間)... – ircmaxell 2010-07-22 20:46:24

+0

沒有工作,但感謝您向我展示「顯示錶狀態」。俏皮。 – nwalker85 2010-07-22 20:53:31

+0

@ircmaxell:你說得對,謝謝 – Andomar 2010-07-22 20:57:04

1

它出現在桌子上用設置爲5的增量創造了你可以用下面的改回爲一個:

ALTER TABLE tbl AUTO_INCREMENT = 1; 
+0

沒有工作。不過謝謝。 – nwalker85 2010-07-22 20:53:04