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.