Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich beim Erstellen einer MySQL-Tabelle einen Fehler wegen doppeltem Schlüssel?

Warum erhalte ich beim Erstellen einer MySQL-Tabelle einen Fehler wegen doppeltem Schlüssel?

Barbara Streisand
Barbara StreisandOriginal
2024-11-29 02:14:08481Durchsuche

Why Am I Getting a Duplicate Key Error When Creating a MySQL Table?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn