Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum gibt es manchmal eine oder mehrere Lücken in der Spalte für die automatische Erhöhung?

Es scheint etwas damit zu tun zu haben, wie Ihre INSERT-Anweisungen gebildet werden. Siehe diese Geige , die von Ihrem Beispiel leicht modifiziert ist. In diesem Fall erhalten Sie keine Lücken (aber wahrscheinlich, wenn Sie weitere Einfügungen anhängen ... Tatsächlich tut es das .).

BEARBEITEN:Nach ein wenig mehr Graben habe ich festgestellt, dass Sie keine Lücken bekommen, wenn Sie die MyISAM-Engine verwenden (im Gegensatz zu InnoDB). Vielleicht ist es also ein Fehler oder eine merkwürdige Designentscheidung in InnoDB ...?

EDIT 2:Weiteres Graben hat diesen Fehler aufgedeckt , eingereicht gegen die InnoDB-Speicher-Engine. Es entspricht sehr genau dem Anwendungsfall der ursprünglichen Frage. Es wurde keine Lösung für den Fehler bereitgestellt, es scheint jedoch, dass eine Lösung darin besteht, innodb_autoinc_lock_mode festzulegen auf 0 in Ihrer my.cnf-Datei vor dem Start von mysqld.