ホームページ >データベース >mysql チュートリアル >外部キー制約の作成時に MySQL エラー 1005 (errno: 150) が発生するのはなぜですか?

外部キー制約の作成時に MySQL エラー 1005 (errno: 150) が発生するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-06 11:48:20573ブラウズ

Why Am I Getting MySQL Error 1005 (errno: 150) When Creating a Foreign Key Constraint?

エラー コード: 1005。テーブルを作成できません ... (エラー番号: 150)

テーブル sira_no と metal_kod の間に外部キー制約を作成しようとしました、エラー コード 1005 が発生しました。これは、errno が原因でテーブルを作成できないことを示しています。 150.

このエラーは、コード内の主キー参照が正しくないために発生します。外部キー関係を定義する場合、親テーブルに参照フィールドが存在し、外部キー フィールドのデータ型とサイズが一致し、インデックスがあるか主キーである必要があります。

トラブルシューティングの手順:

  1. フィールド定義の確認:両方のテーブルの METAL_KODU フィールドは、符号付きプロパティまたは符号なしプロパティを含め、同一のデータ型とサイズを持ちます (たとえば、両方とも VARCHAR(5) ではなく VARCHAR(4) である必要があります)。大文字と小文字の区別も確認してください。
  2. インデックスの作成: metal_kod テーブルで参照されている METAL_KODU フィールドにインデックスがあることを確認します。インデックスがないと、外部キー制約を確立できません。
  3. テーブル タイプの確認: リレーションシップに関係する両方のテーブルは、外部キー制約をサポートするために InnoDB ストレージ エンジンを使用する必要があります。
  4. 外部キー名の検査: 外部キーの名前 (METAL_KODU) が既存のキーと重複していないことを確認します。 key.
  5. Handle Null Values: 親テーブルの METAL_KODU フィールドが NOT NULL に設定されており、外部キー制約で ON DELETE SET NULL を指定している場合は、列プロパティのいずれかを変更します。またはカスケード動作。
  6. Charset and Collat​​ion: 文字セットが正しいことを確認します。照合設定はテーブルとキー列の両方に一致します。
  7. デフォルト値の削除: 外部キー列にデフォルト値 (例、default=0) がある場合は、それを削除します。
  8. 複合キーの確認: METAL_KODU フィールドが親の複合キーの一部である場合テーブルの場合は、外部キー制約をサポートするためにそのフィールドに別のインデックスを作成します。
  9. 構文を確認してください: ALTER TABLE ステートメントを再確認し、フィールド名が正しく入力されていることを確認してください。
  10. 外部キーの長さ: 外部キーの名前が最大長の 64 を超えていないことを確認してください。

これらの潜在的な問題に対処することで、エラー コード 1005 を解決し、sira_no テーブルと metal_kod テーブルの間に外部キー関係を正常に確立できます。

以上が外部キー制約の作成時に MySQL エラー 1005 (errno: 150) が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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