外部キー制約エラーの解決: 「外部キー制約の追加中に子フィールドのデータ型でエラーが発生しました」
このガイドでは、「Patient」、「Appointment」、「MedicalHistory」テーブル間に外部キー関係を作成する際の一般的な SQL エラー「エラー 1215 (HY000): 外部キー制約を追加できません」に対処します。 通常、根本的な原因は、制約に関係する子列と親列の間の型の不一致です。
問題を診断して解決する方法は次のとおりです:
データ型の検証: 関連する列のデータ型を注意深く調べます。「Patient」テーブルの「MedicalHistory」列が「MedicalHistory」テーブルの「MedicalHistoryID」列と正確に一致していることを確認します。 同様に、「Appointment」テーブルの「Patient」列が「Patient」テーブルの「PatientID」列を正確に反映していることを確認します。 たとえ小さな違い (INT と SMALLINT、VARCHAR(255) と VARCHAR(256) など) であっても、制約は追加されません。
一時的な外部キー チェックの無効化: ALTER TABLE
ステートメントを実行して外部キーを追加する前に、SET FOREIGN_KEY_CHECKS=0;
を実行してください。これにより、外部キーのチェックが一時的に無効になり、任意の順序でテーブルを作成できるようになります。 後で SET FOREIGN_KEY_CHECKS=1;
を使用して再度有効にすることを忘れないでください。
詳細なエラー分析: SHOW ENGINE INNODB STATUS;
を使用して、「LATEST FOREIGN KEY ERROR」セクションを検査します。これにより、失敗した制約に関する具体的な詳細が提供され、問題の原因となっている正確な列が特定されます。
説明例: 「MedicalHistory」テーブルの「MedicalHistoryID」が INT
として定義されている場合、「Patient」テーブルの「MedicalHistory」も必要があります >、INT
または他のタイプではありません。SMALLINT
) を再度有効にしてください。SET FOREIGN_KEY_CHECKS=1;
以上が「外部キー制約の追加中に子フィールドのデータ型でエラーが発生しました」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。