mysqlエラー1022の対処法

藏色散人
リリース: 2023-02-16 09:43:17
オリジナル
2329 人が閲覧しました

mysql エラー 1022 は、重複した外部キ​​ー名が原因で発生します。解決策は次のとおりです: 1. 「select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where CONSTRAINT_NAME='...'」コマンドを使用して、重複した外部キ​​ー名を検索します。外部キーの名前を変更するだけです。

mysqlエラー1022の対処法

このチュートリアルの動作環境: Windows 10 システム、MySQL バージョン 5.7、Dell G3 コンピューター。

mysql エラー 1022 はどうすればよいですか?

mysql エラー エラー コード: 1022。書き込めません。テーブル `xxx` のキーが重複しています。

説明: このエラーは外部キー名が重複しています。

重複した外部キ​​ー名を検索し、それらが使用されている場所を調べます。SQL は次のとおりです:

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE  where CONSTRAINT_NAME='重复的外键名称'
ログイン後にコピー

問題がなければ、名前を変更するだけです。

関連拡張:

1 外部キーの定義

外部キーは、別のテーブルの主キーに含まれるテーブル内の列です。

外部キーもインデックスの一種で、一方のテーブルの列を別のテーブルの主キーにポイントすることで 2 つのテーブルを関連付けます。

テーブルには 1 つの外部キーを持つことも、複数のテーブルに関連付けられた複数の外部キーを持つこともできます。

2 外部キーの役割

外部キーの主な役割は、データの一貫性と整合性を確保し、データの冗長性を軽減することです。

主に次の 2 つの側面に反映されます:

  • 実行の防止

テーブルから新しい行を挿入します。キー値 主キー値がメインテーブルでない場合、挿入はブロックされます。

テーブルの外部キー値を変更します。新しい値がメイン テーブルの主キー値ではない場合、変更はブロックされます。

マスター テーブルから行を削除します。その主キーの値がスレーブ テーブルに存在する場合、削除は阻止されます (削除したい場合は、まずスレーブ テーブルから関連する行を削除する必要があります)。

プライマリ テーブルはプライマリ キーの値を変更します。古い値がセカンダリ テーブルに存在する場合、変更は阻止されます (変更する場合は、まずセカンダリ テーブルから関連する行を削除する必要があります)。

  • カスケード実行

メイン テーブルから行を削除し、テーブルから関連する行をまとめて削除します。

メインテーブルの主キー値を変更し、スレーブテーブルの関連行の外部キー値をまとめて変更します。

3 外部キー作成の制限

親テーブルはデータベースにすでに存在しているか、現在作成中のテーブルである必要があります。

後者の場合、親テーブルと子テーブルは同一のテーブルとなり、このようなテーブルを自己参照テーブルと呼び、この構造を自己参照整合性と呼びます。

主キーは親テーブルに定義する必要があります。

外部キーの列数は、親テーブルの主キーの列数と同じである必要があります。

2 つのテーブルは InnoDB テーブルである必要があります。MyISAM テーブルは現在外部キーをサポートしていません。

外部キー列にはインデックスを作成する必要があります。MySQL 4.1.2 以降のバージョンでは、外部キーを確立するときにインデックスが自動的に作成されますが、それ以前のバージョンでは、インデックスを明示的に作成する必要があります。

外部キー関係の 2 つのテーブルの列は、類似したデータ型、つまり相互に変換できる列である必要があります。たとえば、int と tinyint は使用できますが、int と char は使用できません。 。

推奨学習: 「MySQL ビデオ チュートリアル

以上がmysqlエラー1022の対処法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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