ホームページ >データベース >mysql チュートリアル >MySQL エラー 1215: 「外部キー制約を追加できません」が発生するのはなぜですか?

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 22:36:31626ブラウズ

 Why Am I Getting MySQL Error 1215:

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

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

エンジンの整合性

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

データ型と長さ

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

Collat​​ion

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

一意性

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

Null の処理

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

追加の症状

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

間違ったステートメント

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

<code class="sql">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)
);</code>

以上がMySQL エラー 1215: 「外部キー制約を追加できません」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。