[Lösung] MySQL Autoincrement Wert anpassen / verändern

Hi,

ist es euch schonmal passiert dass ihr in eurer MySQL-Datenbank ausversehen Mist eingetragen habt? Und dass dann die ID nicht mehr gestimmt hat die über die Autoincrement-Spalte generiert wurde? Vielleicht, vielleicht auch nicht. Mir ist es passiert. Was tut man in einem solchen Fall? Dass der AutoIncrement bei einem anderen geänderten Wert weiterlaufen soll lässt sich so nämlich nicht einstellen (was ja, wenn man bedenkt wofür der Autoincrement überhaupt da ist, auch gut ist).
Jetzt hab ich also in der Datenbank einen Datensatz, der da so gar nicht rein sollte (wie und warum das auch immer passiert). Klar, ich könnte diesen manuell löschen, das ginge. Was aber dann nicht mehr gegeben ist, ist die fortlaufende Nummer. Manchmal ist es wichtig dass die Einträge lückenlos sind oder gar sein müssen. Mit einem Trick geht es aber trotzdem.

Stellen wir uns folgende Werte vor:

ID Produkt
0 Apfel
1 Feuerzeug
2 Chips
3 Cola
4 Brötchen
5 Zeitschrift

und nehmen wir an, Zeitschrift wäre der Datensatz der da nicht hingehört. Lösche diesen nun:
Jetzt könntest du den Datensatz von neuem eintragen. Allerdings wird dieser dann ID #6 haben, an die #5 kommen wir nicht mehr. Was nun zu tun ist:

Schritt 1
Datenbankoberfläche öffnen (phpMyAdmin o.ä.)

Schritt 2
Betreffende Tabelle exportieren, danach löschen (nicht leeren).

Schritt 3
Export in Datei öffnen. Dort wo der CREATE TABLE-Befehl ist findest du unten sowas ähnliches wie

ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

Den Wert änderst du in „5“. Speichere die Datei

Schritt 4
Importiere die Datei nun, oder kopiere den Inhalt des Exportes und führe ihn über die SQL-Funktion aus.

Und das war’s. Im Endeffekt haben wir jetzt die Tabelle und deren enthaltene Datensätze gelöscht und wieder neu importiert. Und zuvor noch die ID geändert.
Was du noch machen könntest: den Export direkt ohne den AutoIncrement erstellen (Haken rausnehmen). Ich weiß zwar nicht ob der dann bei Null anfängt oder nach der höchsten ID weitermacht, aber ich würd’s nicht darauf ankommen lassen und die zuerst beschriebene Methode anwenden.

Vielleicht hilft dir dieser Tipp ja 🙂

Viele Grüße
Marius

4 Kommentare

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Ich stimme zu.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.