2017-11-17 2 views
0

Ich habe große MySQL-Tabelle 'Docs' (über 3 000 000 Zeilen).
Diese Tabelle hat Spalte id --- Primärschlüssel unsigned und did ----- unsigned.
Manchmal wurden einige Zeilen gelöscht. Aber ich brauche, dass autoincrement 1234 gehen und nicht 1479.
ich ausführen SQL-Anfrage:Fehler # 1062 Mysql Doppeleintrag für den Schlüssel primären

update docs set [email protected]:[email protected]+1 where 0 in(select @num:=0) 

und Fehler # 1062 erhalten.

2 Fragen: 1. Warum habe ich einen doppelten Eintrag für den Primärschlüssel? 2. Wie kann ich sie löschen?

+0

Willkommen bei SO. In Ihrer Tabelle sind keine doppelten Einträge vorhanden. Sie haben den Fehler falsch gelesen. Der Fehler (# 1062), den Sie erhalten, besagt, dass Ihr Aktualisierungsvorgang * zu einem doppelten Schlüssel führen würde. – yacc

+0

Also, wie kann ich Primärschlüssel in der Tabelle aktualisieren? –

+0

Lesen Sie hier: https://stackoverflow.com/questions/17182045/change-primary-key-id-of-a-row-in-a-table-and-shift-the-others-downwards – yacc

Antwort

0

Meine Idee ist es leichter (entfernen und hinzufügen primär):
ALTER TABLE docs DROP id;
ALTER TABLE docs HINZUFÜGEN id INT UNSIGNED NOT NULL AUTO_INCREMENT ERSTE, PRIMÄRSCHLÜSSEL HINZUFÜGEN (id);

Verwandte Themen