/ / Comment NE PAS recycler les identifiants auto_increment dans InnoDB - mysql, innodb, auto-increment

Comment ne pas recycler les identifiants auto_increment dans InnoDB - mysql, innodb, auto-increment

j'ai récemment lis qu’en raison de la façon dont InnoDB recalcule la AUTO_INCREMENT Lorsque le serveur redémarre, les identifiants de tous les enregistrements situés en haut de la liste des identifiants peuvent être réutilisés.

Normalement, ce n’est pas un problème, car lorsqu’un utilisateur est supprimé, tout ce qui est associé à l’ID est également supprimé des autres tables.

Mais je "laisse délibérément leurs messages sur le forum orphelins, étiquetés comme" Posté par = Utilisateur n ° 123 =", afin que les conversations passées soient conservées. Évidemment, si un identifiant était réutilisé, cela poserait un problème.

Je n’ai jamais eu ce problème auparavant cartoujours assez de nouveaux utilisateurs pour qu’il soit improbable qu’un ID soit réutilisé de cette manière. Cependant, dans mon nouveau projet, les inscriptions sont rares et les suppressions d'utilisateurs inactifs sont fréquentes (surtout depuis que les comptes "Open Alpha" ne durent que trois jours à titre de prévisualisation), et cette réutilisation d'identifiant a déjà eu lieu trois fois.

J'ai "corrigé" le problème en enregistrant la valeur correcte pour AUTO_INCREMENT ailleurs et en utilisant cela au lieu de compter sur la valeur interne. Existe-t-il un moyen permettant à InnoDB de mémoriser la dernière valeur réelle?

Réponses:

1 pour la réponse № 1

La documentation 5.5 suggère de stocker la valeur d'auto-incrémentation ailleurs que vous l'avez déjà.

Une autre solution consisterait à émuler une SEQUENCE afin de ne pas utiliser l’incrémentation automatique dans la table elle-même. discuté sur SO avant et encore. le Le blog MYSQL Performance le mentionne.

Encore une autre donnée MySQL qui visse que les autres SGBDR n’ont pas ...