即使插入因错误而失败,MySQL自动增量值也会增加

时间:2012-04-11 14:59:37

标签: mysql sql auto-increment

当我从用户那里收到数据时,我每次都会验证输入的格式(PHP)。我唯一无法验证(或者我不想)的是约束(例如外键)违规。我让DML引发错误并且数据库驱动程序抛出异常。在捕获它之后,我只是通过MySQL的错误代码打印出一些错误消息。

问题是,即使插入失败,我也看到autoincrement序列仍在增长,增加。我该如何防止这种情况?

2 个答案:

答案 0 :(得分:7)

这就是自动增量值和序列的工作原理。使用某个值时,如果事务失败,则不会回收该值,并且会回滚该事务。

由于您使用的是自动增量值,因此实际值并不重要,因此除了缺少数字的美感之外,空格不应该是一个问题。

答案 1 :(得分:0)

您可能必须将innodb_autoinc_lock_mode设置为0或2。