CREATE TABLE コマンドでの重複キー エラー
Q1。エラー 1022: 書き込めません。テーブル内の重複キー
キーが重複しているため、CREATE TABLE コマンドを実行するとエラー 1022 が発生します。クエリを確認しましたが、原因が特定できません。
クエリ:
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;
Q2.重複はどこで発生していますか?
A1. Constraint Name Conflict
エラーは、制約名が重複していることが原因である可能性があります。制約は、特定のテーブル内だけでなく、データベース全体で一意である必要があります。
この場合、データベースには iduser および/または idcategory という名前の制約がすでに存在しているようです。これらの制約の名前を変更すると、問題は解決します。
Q3.既存の制約を特定するにはどうすればよいですか?
A2.制約を検索するクエリ
制約が現在使用されている場所を特定するには、次のクエリを実行します。
SELECT `TABLE_SCHEMA`, `TABLE_NAME` FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');
このクエリは、制約が適用されているスキーマとテーブルの名前を返します。 .
以上がMySQL テーブルの作成時に重複キー エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。