插入选择中的Mysql自动增量错误

时间:2013-11-20 04:54:45

标签: mysql select insert auto-increment

有人可以建议我解决mysql中的以下错误。

  http://bugs.mysql.com/bug.php?id=61058

很久以前(2007年)使用mysql 5.0报告了这个错误,但我仍然遇到与mysql 5.6相同的问题。我已经关注这篇文章,首先对这个问题有所了解。

Mysql auto increment jumps when insert-select

关注帖子,因为有人建议最好设置

ALTER TABLE `test` AUTO_INCREMENT = 1; 

这在我的情况下不起作用,我的存储过程将作为指定时间的事件在后台运行。

任何人都可以建议我解决方法.... ??

提前致谢

2 个答案:

答案 0 :(得分:1)

首先,你应该确保mysql是最新的,然后第二次尝试重置自动增量,如下所示:

ALTER TABLE tablename AUTO_INCREMENT = 1

答案 1 :(得分:1)

您可以从 mysql.ini 更改innodb_autoinc_lock_mode = 0(“传统”锁定模式),以避免在某些情况下跳过主键中的值。有关更多详细信息,请参见手册innodb auto increment handling

  

根据手册“由于语义上可能存在差异,提供了传统的锁定模式选项以实现向后兼容性,性能测试以及解决“混合模式插入”问题。”

     

'在这种锁定模式下,所有“类似于INSERT”的语句均获得特殊的表级AUTO-INC锁定,以便将其插入具有AUTO_INCREMENT列的表中。此锁定通常保持在语句的末尾(而不是事务的末尾),以确保为给定的INSERT语句序列以可预测和可重复的顺序分配自动增量值,并确保自动增量任何给定语句分配的值都是连续的。

要检查的另一件事是auto_increment_increment配置变量的值。默认情况下为1,但是您可能已经更改了它。将它设置为大于1或2的情况很少见,但是可以的。