InnoDB réinitialise le champ auto_increment lorsque vous redémarrez la base de données.
Lorsque InnoDB redémarre, il trouve la valeur la plus élevée dans la colonne, puis démarre à partir de là.
Cela ne se produira pas dans MyISAM car il met en cache le dernier identifiant incrémenté.
Mettre à jour
Cette fonctionnalité/bogue existe depuis 2003 et peut entraîner de graves problèmes. Prenons l'exemple ci-dessous,
-
La table t1 a une clé primaire auto-inc.
-
La table t2 a une colonne pour la clé primaire dans t1 sans "contrainte" de clé étrangère. En d'autres termes, lorsqu'une ligne est supprimée en t1, les lignes correspondantes en t2 sont orphelines.
-
Comme nous le savons avec le redémarrage d'InnoDB, un identifiant peut être réédité. Par conséquent, les lignes orphelines dans t2 peuvent être faussement liées à de nouvelles lignes dans t1.