1. ホーム
  2. mysql

[解決済み] エラー1022 - 書き込みできません; テーブルに重複したキーがあります。

2022-02-10 15:12:40

質問

テーブルの作成コマンドで、キーの重複に関する1022エラーが発生しました。クエリを見ても、どこで重複が起こっているのか理解できません。どなたかわかる方いらっしゃいますか?

SQL query:

-- -----------------------------------------------------
-- Table `apptwo`.`usercircle`
-- -----------------------------------------------------
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;

MySQL said: Documentation

#1022 - Can't write; duplicate key in table 'usercircle' 

解決方法は?

最も可能性が高いのは、すでに名前 iduser または idcategory をデータベースに追加してください。その場合は、制約の名前を変更するだけです。

制約条件は、作成/変更する特定のテーブルだけでなく、データベース全体に対して一意でなければなりません。

制約が現在使用されている場所を調べるには、次のクエリを使用できます。

SELECT `TABLE_SCHEMA`, `TABLE_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');