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