ホームページ > データベース > mysql チュートリアル > MySQL で「外部キー制約を追加できません」エラーをトラブルシューティングするにはどうすればよいですか?

MySQL で「外部キー制約を追加できません」エラーをトラブルシューティングするにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-18 20:17:12
オリジナル
921 人が閲覧しました

How to Troubleshoot

MySQL 外部キー制約エラーのトラブルシューティング ガイド

はじめに

データベース内のテーブルに外部キー制約を確立すると、作成または変更中にエラーが発生する可能性があります。そのようなエラーの 1 つは、「エラー 1215 (HY000): 外部キー制約を追加できません」です。

ケース: 患者テーブルと予約テーブルの外部キー制約の問題

次の SQL クエリで、Patient テーブルと Appointment テーブルに外部キー制約を追加しようとしたときにエラーが発生しました:

<code class="language-sql">CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Patient` (
...
  CONSTRAINT `FK_MedicalHistory`
    FOREIGN KEY (`MedicalHistory`)
    REFERENCES `doctorsoffice`.`medicalhistory` (`MedicalHistoryID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `FK_PrimaryPhysician`
    FOREIGN KEY (`PrimaryPhysician`)
    REFERENCES `doctorsoffice`.`doctor` (`DoctorID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Appointment` (
...
  CONSTRAINT `FK_Patient`
    FOREIGN KEY (`Patient`)
    REFERENCES `doctorsoffice`.`Patient` (`PatientID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `FK_Doctor`
    FOREIGN KEY (`Doctor`)
    REFERENCES `doctorsoffice`.`doctor` (`DoctorID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);</code>
ログイン後にコピー

解決策: データ型の互換性を確認する

この問題を解決するには、外部キー制約に関係する列のデータ型に互換性があることを確認してください。この場合、必ず次のことを行ってください:

  • Patient テーブルの MedicalHistory 列のデータ型は、medicalhistory テーブルの MedicalHistoryID 列と正確に一致します。つまり、両方とも INT 型である必要があります。
  • Patient テーブルの PrimaryPhysician 列のデータ型は、医師テーブルの DoctorID 列のデータ型と一致し、両方とも SMALLINT 型である必要があります。

これらのデータ型の不一致を修正した後、外部キー制約を正常に追加できます。

追加のヒント: 外部キーのチェックを無効にする

特定の順序でテーブルを作成する際の柔軟性を高めるには、SQL クエリを実行する前に次のコマンドの使用を検討してください。

<code class="language-sql">SET foreign_key_checks=0;</code>
ログイン後にコピー

このコマンドは外部キーのチェックを一時的に無効にし、親子テーブルの依存関係に関係なくテーブルを作成できるようにします。テーブルの作成後、次のコマンドを使用して外部キーのチェックを再度有効にできます:

<code class="language-sql">SET foreign_key_checks=1;</code>
ログイン後にコピー

これらのガイドラインに従うことで、外部キー制約がデータベースに正しく実装され、エラーを防止し、データの整合性を維持することができます。

以上がMySQL で「外部キー制約を追加できません」エラーをトラブルシューティングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート