Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich beim Erstellen einer MySQL-Tabelle einen Fehler wegen doppeltem Schlüssel?
Doppelter Schlüsselfehler im CREATE TABLE-Befehl
Q1. Fehler 1022: Schreiben nicht möglich; Doppelter Schlüssel in der Tabelle
Bei der Ausführung eines CREATE TABLE-Befehls tritt aufgrund doppelter Schlüssel ein Fehler 1022 auf. Ich habe die Abfrage überprüft, kann aber die Ursache nicht identifizieren.
Abfrage:
CREATE TABLE IF NOT EXISTS `apptwo`.`usercircle` ( `idUserCircle` MEDIUMINT NOT NULL , `userId` MEDIUMINT NULL , `circleId` MEDIUMINT NULL , `authUser` BINARY NULL , `authOwner` BINARY NULL , `startDate` DATETIME NULL , `endDate` DATETIME NULL , PRIMARY KEY ( `idUserCircle` ) , INDEX `iduser_idx` ( `userId` ASC ) , INDEX `idcategory_idx` ( `circleId` ASC ) , CONSTRAINT `iduser` FOREIGN KEY ( `userId` ) REFERENCES `apptwo`.`user` ( `idUser` ) ON DELETE NO ACTION ON UPDATE NO ACTION , CONSTRAINT `idcategory` FOREIGN KEY ( `circleId` ) REFERENCES `apptwo`.`circle` ( `idCircle` ) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE = INNODB;
F2. Wo findet die Duplizierung statt?
A1. Konflikt mit Einschränkungsnamen
Der Fehler ist wahrscheinlich auf doppelte Einschränkungsnamen zurückzuführen. Einschränkungen müssen in der gesamten Datenbank eindeutig sein, nicht nur innerhalb einer bestimmten Tabelle.
In diesem Fall scheint es, dass in der Datenbank bereits Einschränkungen mit dem Namen iduser und/oder idcategory vorhanden sind. Durch Umbenennen dieser Einschränkungen wird das Problem behoben.
F3. Wie kann ich bestehende Einschränkungen erkennen?
A2. Abfrage zum Auffinden von Einschränkungen
Um zu ermitteln, wo die 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 gibt die Schema- und Tabellennamen zurück, auf die die Einschränkungen angewendet werden .
Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Erstellen einer MySQL-Tabelle einen Fehler wegen doppeltem Schlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!