Frage : InnoDB Maschine verwendet auto_increment IDs! wieder!

Ich bin in ein Problem mit der InnoDB Maschine gelaufen: sie verliert Schiene der folgenden Zahl für auto_increment Spalten nachdem Bedienerwiederanlauf. Und das kann IDs der gelöschten Reihen veranlassen, zu den neuen Reihen wieder zugewiesen zu werden.

This ist wirklich ein Problem für meine Web-Anwendung: einige Tabellen haben Hinweise auf anderen Tabellen. Und wenn gelöschte IDs als neue Rekorde wiederverwendet erhalten, dann jene Referenzen auf andere Aufzeichnungen mit neuen Daten anstelle auf von den gelöschten Reihen plötzlich zeigen. Dieses ist sehr verwirrend und kann zu die grossen, grossen Probleme mit Datenbankübereinstimmung führen.

Every Tabelle in meiner Datenbank hat eine Primärschlüsselspalte, die „Identifikation“ genannt wird, die als auto_increment definiert wird. Und ich baute auf die Annahme, dass die einzigartige Primärschlüssel für alle Datenbanksätze sicherstellen würde.

I haben gelesen, dass MyISAM nicht unter diesem leidet, aber dass Maschine einige Eigenschaften verfehlt, die ich benötige, wie z.B. die Reiheniveau Blockierung und die Verhandlungen.

How kann ich Schlusse Schiene des höchsten neuen autonumber Wertes verhindern, nachdem Bediener wiederbeginnt, damit IDs der gelöschten Reihen nicht wieder zugewiesen erhalten?

Antwort : InnoDB Maschine verwendet auto_increment IDs! wieder!

Ich kann nicht, eine Web-Anwendung wissen würde, wenn das DB ausgenommen wiederbegonnen wurde, wenn Sie etwas wie der pid des mysql Falls auf Scheibe jedes Mal Sie Zugang die Seite speichern.

O.K., nun da ich an es denke, warum man nicht dies tut: Jedes Mal wenn Sie die Anwendung laufen lassen, außer dem last_insert_id () zu einer lokalen Akte.

Bevor Sie einen Einsatz laufen lassen, ob Akte prüfen und sie mit der folgenden auto_increment Zahl vergleichen

AUTO_INCREMENT VON information_schema.TABLES VORWÄHLEN IN DEM
      TABLE_SCHEMA = DATENBANK () UND TABLE_NAME = „, was auch immer“

Wenn die lokale Akte die selben oder das grössere hat, auto_increment bis eins dann einstellen mehr als die grössere Zahl. Wenn nicht, nicht sich sorgen.
Weitere Lösungen  
 
programming4us programming4us