2010-02-09 54 views
0

考慮以下SQL時:MySQL在重複鍵似乎增加AUTO_INCREMENT列觸發

CREATE TABLE USER1 
(
    pkUSER1_ID INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    DATE_UPDATED TIMESTAMP NULL DEFAULT NULL, 
    NAME VARCHAR(25) NOT NULL, 
    CONSTRAINT PRIMARY KEY (pkUSER1_ID), 
    CONSTRAINT UNIQUE (NAME) 
) 
ENGINE = INNODB; 

INSERT INTO USER1 
    SET NAME = 'asdf' 
    ON DUPLICATE KEY 
UPDATE DATE_UPDATED = NOW(); 

INSERT INTO USER1 
    SET NAME = 'asdf' 
    ON DUPLICATE KEY 
UPDATE DATE_UPDATED = NOW(); 

INSERT INTO USER1 
    SET NAME = 'asdf1' 
    ON DUPLICATE KEY 
UPDATE DATE_UPDATED = NOW(); 

SELECT * FROM USER1; 

現在看到的結果集。即使沒有插入任何內容,auto_increment也會增加。

+------------+---------------------+-------+ 
| pkUSER1_ID | DATE_UPDATED  | NAME | 
+------------+---------------------+-------+ 
|   1 | 2010-02-09 13:29:15 | asdf | 
|   3 |    NULL | asdf1 | 
+------------+---------------------+-------+ 

我得到兩個單獨的服務器不同的行爲......上面的輸出是從2.6.9-023stab048.6企業(我認爲這是紅帽)運行MySQL v5.0.45。在2.6.26-2-amd64上運行的MySQL v5.0.51a-24 + lenny2-log(這顯然是Debian)上不存在這個問題。

是否有配置設置我可以改變以避免這種情況?我的數據庫中有大約300名用戶,但運行插入/更新語句的頻率很高,最新的用戶ID超過600,000。

回答

0

這是一個錯誤... http://bugs.mysql.com/bug.php?id=28781

不知道爲什麼客戶端運行一個3歲的MySQL版本。

+0

從那張票:*«我是關閉這個'不是一個錯誤'。 auto_increment的行爲可以通過配置參數(如前所述)進行控制,並且預計autoinc值中存在差距。 我會確保我們在文檔中增加更多內容來澄清這一點。»* – 2014-05-07 11:54:15

相關問題