# 1062 - Doppelter Eintrag '1' für Schlüssel 1 - Keine doppelten Einträge gefunden

8

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?

    
Ashley 03.11.2011, 13:09
quelle

3 Antworten

20

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 03.11.2011, 13:15
quelle
2

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.

    
Torben 15.08.2013 10:38
quelle
0
%Vor%

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%     
Johan 03.11.2011 13:17
quelle

Tags und Links