Question : Le moteur d'InnoDB réutilise des IDs d'auto_increment ! !

J'ai rencontré un problème avec le moteur d'InnoDB : il perd la voie du prochain nombre pour des colonnes d'auto_increment après que relancement de serveur. Et cela peut causer des IDs des rangées supprimées d'être attribué à nouveau à de nouvelles rangées. le

This est vraiment un problème pour mon application Web : quelques tables ont des références à d'autres tables. Et si les IDs supprimés obtiennent réutilisés pour des nouveaux records, puis ces références indiquer soudainement d'autres disques avec de nouvelles données au lieu de aux rangées supprimées. C'est très embrouillant et peut mener à de grands, grands problèmes avec l'uniformité de base de données. la table du

Every dans ma base de données a une colonne de clé primaire appelée la « identification », qui est définie comme auto_increment. Et j'ai compté sur la prétention que cela assurerait des clés primaires uniques pour tous les disques de base de données. le

I ont lu que MyISAM ne souffre pas de ceci, mais que le moteur manque quelques dispositifs dont j'ai besoin, comme par exemple le verrouillage et les transactions de rangée-niveau. le

How peut j'empêcher la voie perdante de la nouvelle valeur d'autonumber la plus élevée après que le serveur se remette en marche, de sorte que les IDs des rangées supprimées n'obtiennent pas attribués à nouveau ?
class= de

Réponse : Le moteur d'InnoDB réutilise des IDs d'auto_increment ! !

Je ne sais pas une application Web saurait si le DB était remis en marche à moins que si vous stockez quelque chose comme le PID de l'exemple de mysql sur le disque chaque fois vous accès la page.

OK, maintenant que je pense à lui, pourquoi ne pas faire ceci : Chaque fois que vous courez l'application, sauf le last_insert_id () à un dossier local.

Avant que vous couriez une insertion, vérifier ce dossier et le comparer au prochain nombre d'auto_increment

CHOISIR AUTO_INCREMENT À PARTIR d'information_schema.TABLES OÙ
      TABLE_SCHEMA = BASE DE DONNÉES () ET TABLE_NAME = « quoi que »

Alors, si le dossier local a la même chose ou le plus grand, placer l'auto_increment à un davantage que le nombre plus grand. Sinon, ne pas s'inquiéter.
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us