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

Mary-Kate Olsen
リリース: 2024-10-26 17:44:29
オリジナル
312 人が閲覧しました

Why Am I Getting the

外部キー制約エラー: 原因と解決策について

この質問は、MySQL でコース テーブルを作成中に発生したエラーに関するものです。

ERROR 1215 (HY000): Cannot add foreign key constraint
ログイン後にコピー

このエラーは、SQL ステートメントで指定された外部キー制約に問題があることを示します。外部キー制約により、あるテーブル (コースなど) の外部キー列のデータが別のテーブル (部門など) の主キー列の既存のデータが参照されるようになります。

このエラーを解決して正常に作成するにはコース テーブルでは、次のガイドラインに従うことが重要です:

  • マッチング エンジン、データ型、および照合順序:

    • 両方の参照部門テーブルのフィールド (dept_name) とコース テーブルの外部キー フィールド (dept_name) は、InnoDB などの同じエンジンを持っている必要があります。
    • フィールドは、長さを含め、同一のデータ型を持つ必要があります。たとえば、文字セット エンコーディングを指定する VARCHAR(20) または INT(10) UNSIGNED.
    • Collat​​ion も一致する必要があります。通常、utf8 が使用されます。
  • 参照フィールドの一意性:

    • 外部キー (dept_name) によって参照されるフィールド部門テーブル内) は一意である必要があります。これにより、コース テーブルの各行が部門テーブルの行を正しく参照できるようになります。
  • NOT NULL 制約:

    • 外部キー制約で SET NULL オプションを指定した場合は、関連する列が NOT NULL として定義されていないことを確認してください。

これらのガイドラインに従ってください。を使用すると、「外部キー制約を追加できません」エラーを回避し、コース テーブルと部門テーブルの間に適切な参照整合性を確立できます。

追加メモ:

外部キーの無効化SET FOREIGN_KEY_CHECKS=0 を使用したチェックにより、誤った制約を持つテーブルを作成できる可能性がありますが、お勧めできません。この設定により、データの不整合やデータベースの破損が発生する可能性があります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!