Mysql id auto_incremet Wert manuell setzen – Duplicate entry mysql error problems

0
MySQL Open Source Datenbank Logo

MySQL Open Source Datenbank Logo

Hier ist der Befehl um den auto_incement Wert einer MySQL Tabelle manuell neu zu setzen.

ALTER TABLE ´Tabellenname´ AUTO_INCREMENT=1

Es kann hierfür mehre Gründe geben.
Der Integer Typ von der Tabelle ist nicht groß genug
Beim Finetuning von Performance Schrauben an der MySQL Datenbank ist es elemetar ID Felder mit dem Typ Integer zu versehen. Die meisten MySQL Tabellen wie Beispielsweise ein MySQL Tabelle für einzelnen Sprachen einer Internetseite beinhalten müssen keine so große Integer range haben. Hier sollte dann auch nur tinyint gewählt werden. In dem Falle bringt es natürlich bei der 128 Sprache auch nichts den Wert neu zu setzen. Er wird sich nicht ändern!

Ein Import mit Ids wird durchgeführt
Wenn man Datensätze mit Ids in eine Tabelle einfügt kann hier auch eine Differenz zu dem auto_increment Wert entstehen. Hier kann es sein das der nächste Wert dann schon vergeben ist. In diesem Falle muß er manuell hochgesetzt werden.

Datensätze werden gelöscht und teilweise neu eingefügt
Wenn man eine neue MySQL Tabelle nutzt oder an der Applikation etwas geändert hat muß das natürlich nicht immer fehlerfrei laufen 😉 Jetzt kann es sein das man Datensätze entfernen, editieren und später wieder einfügen muß. Machmal ist es einfacher Datensätze im MySQL Dump mit Hilfe von Texteditoren zu überarbeiten, als das über MySQL Befehle durchzuführen. Zudem kann es dabei natürlich auch zu einer ordentlichen Datenbank Belastung kommen. Das gilt natürlich auch wenn man die Änderungen an lokalen oder Test MySQL Servern durchführt. Spielt man die Datensätze dann wieder ein läuft der auto_increment Wert aber einfach weiter. Löscht man also die Datensätze 10.000 bis 15.000 überarbeitet diese und spielt sie wieder ein ist man bei der ID 20.000 und der Zahelnbereich 10.000 bis 15.000 bleibt leer. Hier ist es also nötig den Wert vor dem Import manuell wieder auf 10.001 zu setzen.

Mysql Integer Typen in der Übersicht
TINYINT

Die kleinste Integer Range
Die signed range ist von –128 bis 127. Die unsigned range entspricht also 0 bis 255.
SMALLINT 
Ein kleiner Integer
Die signed range ist von –32.768 bis 32.767. Die unsigned range entspricht also 0 bis 65.535
MEDIUMINT 
Die mittlere Integer Größe
Die signed range ist von –8.388.608 bis 8.388.607. Die unsigned range entspricht also 0 bis 16.777.215
INT oder INTEGER 
Der normale Integer
Die signed range ist von –2.147.483.648 bis 2.147.483.647. Die unsigned range entspricht also 0 bis 4294967295
BIGINT 
Der große Integer
Die signed range ist von –9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807. Die unsigned range entspricht also 0 bis 18.446.744.073.709.551.615

About Author

PHP Kurs und Inhouse Schulungen für Webdevelopment mit Continuous Integration - Clean Coder, Blogger, Autor, Dozent und Senior Webdeveloper www.rolandgolla.de

Leave A Reply

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