我有列的基本表:與對重複密鑰更新太多的汽車增量
- ID(初級與AI)
- 名(唯一)
- 等
如果獨特的列不存在,插入行,否則更新該行....
INSERT INTO pages (name, etc)
VALUES
'bob',
'randomness'
ON DUPLICATE KEY UPDATE
name = VALUES(name),
etc = VALUES(etc)
問題是如果它執行UPDATE,id列上的auto_increment值會上升。所以如果執行了一大堆更新,id auto_increment會經歷屋頂。
顯然,這是一個錯誤:http://bugs.mysql.com/bug.php?id=28781
...但我在共享主機使用的是InnoDB在MySQL 5.5.8。
具有無解多年前問題的其他人: prevent autoincrement on MYSQL duplicate insert和 Why does MySQL autoincrement increase on failed inserts?
理念上的解決?我可能會以某種方式錯誤地構建數據庫嗎?
******編輯****:它似乎將innodb_autoinc_lock_mode = 0添加到您的my.ini文件可修復此問題,但是我有哪些共享主機選項?
****** EDIT 2 ******:好的,我想我唯一的選擇是換成MyISAM作爲存儲引擎。作爲一個超級mySQL新手,我希望這不會造成很多問題。是嗎?
的一個大問題是,它不支持數據庫關係的定義。 InnoDB確實支持這一點。 – bakkerjoeri 2012-08-04 00:20:43
innodb_autoinc_lock_mode = 0爲我工作。謝謝 – 2013-04-06 18:41:37
我切換到Aria(MariaDB中的MyISAM),它可以防止auto_increment – DanFromGermany 2013-06-20 11:53:20