「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MySQL エラー 1215: 「外部キー制約を追加できません」が発生するのはなぜですか?

MySQL エラー 1215: 「外部キー制約を追加できません」が発生するのはなぜですか?

2024 年 11 月 4 日に公開
ブラウズ:922

 Why Am I Getting MySQL Error 1215: \

MySQL エラー 1215: "外部キー制約を追加できません"

MySQL で外部キー制約を作成しようとする場合、次のことが重要です。参照フィールドと外部キー フィールドの両方が特定の要件に準拠していることを確認してください。このエラーを診断して解決する方法は次のとおりです:

エンジンの一貫性

  • 関係する両方のテーブルに「InnoDB」エンジンを使用する必要があります。
]

データ型と長さ

  • 両方のフィールドのデータ型と長さは正確に一致する必要があります。たとえば、参照されるフィールドが VARCHAR(20) の場合、外部キー フィールドも VARCHAR(20).

Collat​​ion

  • である必要があります。照合順序は、文字セットと並べ替え規則を示します。両方のフィールドは、utf8.

Uniqueness

  • などの同じ照合順序を使用する必要があります。参照されるフィールドは一意である必要があり、多くの場合、プライマリまたは一意で示されます。キー。外部キー フィールドは、重複値を許可するフィールドを参照できません。

Null Handling

  • 次の場合は、SET NULL 条件を定義していないことを確認してください。参照される列の一部が NOT NULL と宣言されています。

追加の症状

エラーが解決しない場合は、コマンド SHOW ENGINE INNODB STATUS を実行してください。

不正なステートメント

指定された SQL ステートメントは、外部キー制約を持つ "course" という名前のテーブルを作成し、 「部門名」フィールド。ただし、このステートメントには「dept_name」フィールドのデータ型の指定が欠けているため、正しくありません。これを修正するには、ステートメントを次のように変更する必要があります:

create table course (
    course_id varchar(7),
    title varchar(50),
    dept_name varchar(20),
    credits numeric(2,0),
    primary key(course_id),
    foreign key (dept_name) references department(dept_name)
);
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3