Fråga : Den InnoDB motorn återanvänder auto_incrementIDs!!

Jag har kört in i ett problem med den InnoDB motorn: den förlorar spårar av det nästa numrerar för auto_incrementkolonner efter serveromstarten. Och det kan orsaka IDs av borttaget ror för att tilldelas igen till nytt ror.

This är egentligen ett problem för min rengöringsdukapplikation: något bordlägger har hänvisar till till annat bordlägger. Och om borttagna IDs får återanvände för nya rekord, då de hänvisar till pekar plötsligt till andra rekord med nya data i stället för till borttagen ror. Detta är mycket confusing och kan leda till stora stora problem med databaskonsistens.

Every bordlägger i min databas har en primär nyckel- kolonn som namnges ”LEGITIMATIONEN”, som definieras som auto_increment. Och jag relied på antagandet som skulle det ser till att unikt primärt stämm för alla databasrekord.

I har läst att MyISAM inte lider från denna, men att motorn missa några särdrag som jag behöver, något liknande eg. ro-jämna att låsa och transaktioner.

How kan mig förhindra att förlora spårar av den högsta nya autonumberen värderar, efter serveren har startat om igen, så att IDs av borttaget ror, få inte tilldelad igen?
" klar "

Svar : Den InnoDB motorn återanvänder auto_incrementIDs!!

Jag vet inte hur en skulle rengöringsdukapplikation vet, om dben startades om igen undantar, om du lagrar något något liknande som piden av mysqlen anföra som exempel på disk varje tid, du tar fram sidan.

REKO nu det I-funderare av den, varför att inte göra detta: Varje tid du kör applikationen, räddning som last_insert_iden () till en lokal sparar.

Kontrollera, som sparar, för du kör ett mellanlägg, och jämför den till den nästa auto_incrementen numrerar

VÄLJ AUTO_INCREMENT FRÅN information_schema.TABLES VAR
      TABLE_SCHEMA = DATABAS () OCH TABLE_NAME = ”, allt vad”,

Därefter om lokalen sparar, har samma eller den mer stora fastställda auto_incrementen till en mer än mer stor numrerar. Om inte, oroa inte.
Andra lösningar  
 
programming4us programming4us