Mysql
發生插入錯誤後MySQL自動增量列增加
我在我的數據庫中進行了一些插入測試,我意識到當 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 |
我想知道以前是否有人遇到過這個問題,以及這是否真的是一個問題。
乾杯。
PS:
Errno:1452 - fk 約束失敗。這意味著我正在嘗試引用另一個表中的某些列值,並且該值不存在那裡。
- 數據庫:MySQL Ver 14.14 Distrib 5.6.13,適用於 Windows 64 位
- 儲存引擎:InnoDB
關於傳統 InnoDB 自動增量鎖定的 MySQL 文件的最後一句話說
如果您使用計數器回滾已生成數字的事務,您可能會在分配給 AUTO_INCREMENT 列的值序列中看到間隙。
因此,如果第二個 INSERT 失敗並回滾,則會產生間隙。
您可能必須將innodb_autoinc_lock_mode設置為 0 或 2。請閱讀有關可配置 InnoDB 自動增量鎖定的 MySQL 文件以了解更改innodb_autoinc_lock_mode可以為您做什麼。