使用INSERT ... SELECT时自动递增间隙,即使使用innodb_autoinc_lock_mode = 0也是如此

时间:2012-06-20 12:58:52

标签: mysql

即使使用

,我的自动增量键也会出现间隙
innodb_autoinc_lock_mode = 0

我将问题分离为单个INSERT ... SELECT语句。基本上,即使没有实际执行插入(重复键),每个INSERT ... SELECT语句也会将表的auto_increment增加一个。在我的情况下,我使用INSERT IGNORE,但我测试没有,auto_increment仍然错误地增加。

我担心这个,因为这个INSERT ... SELECT语句运行的频率有些高,所以键很快就会变大。

如果没有办法,我会忍受它,但有没有办法避免这种行为?

2 个答案:

答案 0 :(得分:2)

这是一个错误。见:http://bugs.mysql.com/bug.php?id=61058
...你可以使用以下方法来避免它:

ALTER TABLE `test` AUTO_INCREMENT = 1;
insert...select之后

然而,这不是一个好主意,因为alter table创建临时表,复制数据等等。

答案 1 :(得分:0)

看起来像是mysql中的常见问题。就个人而言,我只是忍受它。