2011-09-27 60 views
5

我插入使用INSERT IGNORE说500行,如果行已经存在(基于一个唯一的字段),那么它什么也不做,如果没有,它插入行。如何在不改变MySQL的情况下停止自动增量?

我的问题是,说只有10不存在自动增量仍然增加每个插入,所以它增加了500,所以我最终在我的ID的差距。我该如何阻止?

我曾尝试:

SET global innodb_autoinc_lock_mode = 0; 

但我得到的错误:

1238 - 可变 'innodb_autoinc_lock_mode' 是一个只读变量

如何改变呢?

+0

可能的重复:http://stackoverflow.com/questions/5655396/why-insert-ignore-increments-the-auto-increment-primary-key –

+0

谢谢你的链接,我看了这个,并编辑我的问题包括我试过的东西。 – Craig

+5

为什么你*关心*如果有差距? – SingleNegationElimination

回答

10

根据MySQL's documentationinnodb_autoinc_lock_mode不是动态变量,因此在MySQL运行时不能更改。

你要么必须将其设置在

innodb_autoinc_lock_mode=0 

应当注意的是,你不应该(读取命令行

--innodb_autoinc_lock_mode=0 

或在配置文件中(mysql.ini) :从不)依靠一个连续的id序列。回滚或失败的交易可能会导致差距。

+0

谢谢。我将该行添加到my.cnf文件并重新启动了mysql – Craig

相关问题