Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich beim Erstellen einer Tabelle den MySQL-Fehler 1022 (doppelter Schlüssel)?
Kann nicht schreiben; Doppelter Schlüssel beim Erstellen einer Tabelle
Beim Versuch, eine neue Tabelle zu erstellen, tritt aufgrund doppelter Primärschlüsseleinträge der Fehler 1022 auf. Selbst nach Durchsicht der Abfrage kann es für Sie schwierig sein, die Quelle der Duplizierung zu ermitteln. Lassen Sie uns dies weiter untersuchen.
Die von Ihnen bereitgestellte Abfrage enthält eine Einschränkung namens „iduser“ als Fremdschlüssel für die Spalte „userId“. Darüber hinaus wird eine Einschränkung namens „idcategory“ für die Spalte „circleId“ angegeben. Diese Einschränkungsnamen scheinen die Ursache des Problems zu sein.
Einschränkungen und Duplikation
Einschränkungen in MySQL müssen in der gesamten Datenbank eindeutig sein, nicht nur für die bestimmte Tabelle erstellt oder geändert werden. Daher ist es möglich, dass Ihre Datenbank bereits andere Tabellen oder Indizes enthält, die die Einschränkungsnamen „iduser“ oder „idcategory“ verwenden. Dieser Konflikt führt zum Fehler wegen doppelter Schlüssel.
Identifizieren doppelter Einschränkungen
Um festzustellen, wo diese Einschränkungen derzeit verwendet werden, führen Sie die folgende Abfrage aus:
SELECT `TABLE_SCHEMA`, `TABLE_NAME` FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');
Diese Abfrage zeigt die Tabellen und Schemas an, in denen die Einschränkungen „iduser“ und „idcategory“ gelten referenziert.
Lösung
Um den Fehler zu beheben, müssen Sie die doppelten Einschränkungen umbenennen. Erwägen Sie die Verwendung eindeutiger Namen, die spezifisch für die aktuelle Tabelle sind, z. B. „fk_user“ für die Fremdschlüsseleinschränkung in der Spalte „userId“. Sobald die Einschränkungen umbenannt und die Abfrage aktualisiert wurde, sollten Sie die Tabelle auch ohne erfolgreich erstellen können der doppelte Schlüsselfehler.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Erstellen einer Tabelle den MySQL-Fehler 1022 (doppelter Schlüssel)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!