Ich habe eine MySQL-Tabelle mit einer autoinkrementierten ID-Spalte. Die ID begann von 1 und ist jetzt in den 4000ern.Was passiert, wenn Autoinkrement mit vorhandenen Daten in MySQL kollidiert?
Allerdings muss ich auch einige Legacy-Daten aus einer alten Version der Anwendung in diese Tabelle portieren. Die IDs dieser Daten beginnen bei 5000 und müssen für Überwachungszwecke aufbewahrt werden.
Was passiert, wenn ich einen Eintrag einfüge, nachdem mein Autoinkrement-Zähler bis zu 4999 ist? Ist Autoincrement intelligent genug, um nach der nächsten verfügbaren ID zu suchen, oder wird es abstürzen, weil es versucht, die ID 5000 einzufügen, die bereits existiert?
Während Ratschläge, wie man dieses Problem umgehen kann, sehr hilfreich sind, würde ich auch gerne verstehen, was MySQL in dieser Situation tun würde und ob ich überhaupt eingreifen muss.
Wir haben etwas in einer transaktionalen innoDB -Tabelle, in der es sich automatisch nach oben, aber unter der maximalen ID erhöht. Ich denke, dieser einfache Test ist einfach zu einfach. Ich bin ziemlich sicher, dass mysql vorhandene IDs automatisch überspringt, aber ich bin nicht 100% –
Ja, wir haben auf innoDb Autoinkrement niedriger als max (ID), nicht sicher, was passieren wird –
Das Problem mit Ihrem Test hier ist, dass Sie haben eingefügt mit einer normalen insert-Anweisung. Ich hatte ziemlich viele Probleme, bei denen ich regelmäßig eine Produktionsdatenbank auf einem Entwicklungsserver wiederherstellte, und die automatischen Inkremente des Entwicklungsservers werden nicht aktualisiert und kollidieren daher mit den bereits vorhandenen Produktionsdaten, wenn ich sie erstelle ein neuer Eintrag in dev. –