Wenn Sie also versuchen, einem Feld ein Autoinkrement hinzuzufügen, erscheint # 1062 - Eintrag 1 für Schlüssel 1 duplizieren. Ich habe versucht, den Primärschlüssel zu entfernen und es wieder hinzuzufügen, und das funktioniert gut (was ich annehmen würde, würde nicht, wenn es Dubletten gab?)
Aber wenn ich versuche, dem Feld ein Autoinkrement hinzuzufügen, wird ein Fehler ausgegeben. Es gibt mir eine Browse-Option, die das folgende SQL ausführt:
%Vor%Dies liefert jedoch eine leere Ergebnismenge. Dies legt nahe, dass es keine Duplikate gibt. Also, wenn es keine Duplikate gibt, warum kann ich kein Autoinkrement hinzufügen?
Haben Sie Zeilen mit dem Wert 0
oder NULL
für diese Spalte? ALTER TABLE
kann dazu führen, dass Primärschlüssel neu geordnet werden. Im Fall eines Schlüssels von 0 versucht MySQL, ihm den Wert 1 zu geben, der fehlschlägt, wenn der Schlüssel 1 bereits existiert.
Versuchen Sie, die Werte für 0
oder NULL
in der Spalte auf etwas höher (und nicht verwendet) zu ändern.
Michael Mior's Antwort funktioniert, wenn Sie die Daten in der Tabelle ändern können. Es gibt jedoch auch eine Problemumgehung, mit der Sie die Daten intakt halten können (ich habe dies unter MySQL 5.5 getestet). Denken Sie daran, dass ein Nullwert als Primärschlüssel in MySQL aus diesem Grund nicht empfohlen wird. Wenn Sie die Null loswerden können, dann tun Sie es.
Deaktivieren Sie die automatische Wertgenerierung, wenn eine Null eingefügt wird:
%Vor%Fügen Sie AUTO_INCREMENT zu Ihrer Spalte hinzu:
%Vor%Aktivieren Sie die automatische Wertegenerierung erneut:
%Vor%Es sollte offensichtlich sein, dass das Einfügen von Daten in die Tabelle während dieses gesamten Vorgangs nicht erlaubt sein kann. Andernfalls werden unerwünschte Nullwerte in der Spalte angezeigt.
schreibe die Abfrage in
um %Vor%Wenn Sie eine Zeile einfügen möchten, verwenden Sie den folgenden Code:
%Vor%Wenn Sie alle doppelten Zeilen auswählen möchten, verwenden Sie:
%Vor%Sie müssen die IDs aktualisieren, die doppelt aufgeführt sind.
Eine weitere Option besteht darin, eine zusätzliche Spalte hinzuzufügen und den alten PK zu löschen.
%Vor%Tags und Links sql mysql phpmyadmin