MySQL 外部キー制約: Errno 150 エラーの回避
他のテーブルを参照する外部キーを使用して MySQL でテーブルを作成しているときに、エラー番号: 150 エラー。この問題を解決するには、次のガイドラインに従うことが重要です:
-
テーブルの順序を確認する: 外部キーを使用して子テーブルを作成する前に、主キーを含む親テーブルを定義します。 Reference.
-
外部キーのサポートを有効にする: 親テーブルと子テーブルの両方で、通常は次を使用して外部キー制約をサポートする必要があります。 InnoDB ストレージ エンジン。
-
左端の列キー: 親テーブルで参照される列は、キーの左端の列である必要があり、理想的には PRIMARY KEY または UNIQUE KEY です。
-
主キーの順序の一致: FK 定義は、次の PK 定義と一致する必要があります。列の順序とデータ型の点。
-
適切なデータ配置: 親テーブルの PK 列と子テーブルの FK 列は、データ型と照合順序の点で一致する必要があります。
-
既存のデータの互換性: 子テーブルにデータが含まれている場合、各 FK 列の値が、対応する値と一致することを確認します。親テーブルの PK 列。
-
一時テーブルまたはパーティション化されたテーブルを避ける: 外部キー制約は、TEMPORARY テーブルまたは PARTITIONED テーブルには定義できません。
-
Null 許容列: ON DELETE SET NULL オプションを使用する場合、FK 列はnullable.
-
一意の制約名: 競合を避けるために、外部キー制約にはスキーマ全体で一意の名前が必要です。
-
依存外部キー:不正な形式の FK が、親テーブルの同じフィールドを参照する別のテーブルに存在します。新しい FK を作成する前に一貫性を確認してください。次のクエリを使用して、問題のある FK を特定します:
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE CONSTRAINT_SCHEMA = 'your_schema_name'
AND CONSTRAINT_NAME <> 'PRIMARY' AND REFERENCED_COLUMN_NAME IS NOT NULL;
ログイン後にコピー
以上が外部キー制約を使用するときに MySQL Errno 150 エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。