データベースで挿入テストを行っていましたが、エラー1452が原因でINSERTステートメントが失敗すると、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:
エラー番号:1452-fk制約が失敗します。これは、別のテーブルのいくつかの列の値を参照しようとしているが、この値がそこに存在しないことを意味します。
MySQLドキュメントの最後のセンテンス Traditional InnoDB Auto-Increment Locking は言う
カウンターを使用して数値を生成したトランザクションをロールバックすると、AUTO_INCREMENT列に割り当てられた値のシーケンスにギャップが生じることがあります。
したがって、2番目のINSERTが失敗してロールバックされた場合、ギャップが生じます。
innodb_autoinc_lock_mode を0または2に設定しなければならない場合があります。MySQLのドキュメント Configurable InnoDB Auto-Increment Locking を読んで、変更内容 innodb_autoinc_lock_mode を理解してください。あなたのためにしてください。