当我从用户那里收到数据时,我每次都会验证输入的格式(PHP)。我唯一无法验证(或者我不想)的是约束(例如外键)违规。我让DML引发错误并且数据库驱动程序抛出异常。在捕获它之后,我只是通过MySQL的错误代码打印出一些错误消息。
问题是,即使插入失败,我也看到autoincrement
序列仍在增长,增加。我该如何防止这种情况?
答案 0 :(得分:7)
这就是自动增量值和序列的工作原理。使用某个值时,如果事务失败,则不会回收该值,并且会回滚该事务。
由于您使用的是自动增量值,因此实际值并不重要,因此除了缺少数字的美感之外,空格不应该是一个问题。
答案 1 :(得分:0)
您可能必须将innodb_autoinc_lock_mode设置为0或2。