ホームページ > データベース > mysql チュートリアル > MySQL テーブルの作成時に重複キー エラーが発生するのはなぜですか?

MySQL テーブルの作成時に重複キー エラーが発生するのはなぜですか?

Barbara Streisand
リリース: 2024-11-29 02:14:08
オリジナル
449 人が閲覧しました

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

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート