Leo*_*ins 5 mysql innodb insert auto-increment
我在我的数据库中做了一些插入测试,我意识到当 INSERT 语句失败时,由于错误 1452,导致 auto_increment 值增加 1。即使在这个语句中没有插入任何行。
因此,此行为导致下一个有效插入跳过 auto_increment 的可用和可能值。
例子:
1st Insert | Result: Success | id(auto_increment_column): 1 |
2nd Insert | Result: Failure | -------- No rows were recorded---- |
3nd Insert | Result: Success | id(auto_increment_column): 3 |
Run Code Online (Sandbox Code Playgroud)
我想知道之前是否有人遇到过这个问题,这是否真的是一个问题。
干杯。
PS:
错误:1452 - fk 约束失败。这意味着我试图引用另一个表中的某个列值,但该值在那里不存在。
关于传统 InnoDB 自动增量锁定的 MySQL 文档的最后一句话说
如果您使用计数器回滚已生成数字的事务,您可能会看到分配给 AUTO_INCREMENT 列的值序列中的间隙。
因此,如果第二次 INSERT 失败并回滚,则会产生间隙。
您可能需要将innodb_autoinc_lock_mode设置为 0 或 2。请阅读有关可配置 InnoDB 自动增量锁定的 MySQL 文档以了解更改innodb_autoinc_lock_mode可以为您做什么。
| 归档时间: |
|
| 查看次数: |
6544 次 |
| 最近记录: |