エラー コード: 1005。テーブルを作成できません ... (エラー番号: 150)
テーブル sira_no と metal_kod の間に外部キー制約を作成しようとしました、エラー コード 1005 が発生しました。これは、errno が原因でテーブルを作成できないことを示しています。 150.
このエラーは、コード内の主キー参照が正しくないために発生します。外部キー関係を定義する場合、親テーブルに参照フィールドが存在し、外部キー フィールドのデータ型とサイズが一致し、インデックスがあるか主キーである必要があります。
トラブルシューティングの手順:
-
フィールド定義の確認:両方のテーブルの METAL_KODU フィールドは、符号付きプロパティまたは符号なしプロパティを含め、同一のデータ型とサイズを持ちます (たとえば、両方とも VARCHAR(5) ではなく VARCHAR(4) である必要があります)。大文字と小文字の区別も確認してください。
-
インデックスの作成: metal_kod テーブルで参照されている METAL_KODU フィールドにインデックスがあることを確認します。インデックスがないと、外部キー制約を確立できません。
-
テーブル タイプの確認: リレーションシップに関係する両方のテーブルは、外部キー制約をサポートするために InnoDB ストレージ エンジンを使用する必要があります。
-
外部キー名の検査: 外部キーの名前 (METAL_KODU) が既存のキーと重複していないことを確認します。 key.
-
Handle Null Values: 親テーブルの METAL_KODU フィールドが NOT NULL に設定されており、外部キー制約で ON DELETE SET NULL を指定している場合は、列プロパティのいずれかを変更します。またはカスケード動作。
-
Charset and Collation: 文字セットが正しいことを確認します。照合設定はテーブルとキー列の両方に一致します。
-
デフォルト値の削除: 外部キー列にデフォルト値 (例、default=0) がある場合は、それを削除します。
-
複合キーの確認: METAL_KODU フィールドが親の複合キーの一部である場合テーブルの場合は、外部キー制約をサポートするためにそのフィールドに別のインデックスを作成します。
-
構文を確認してください: ALTER TABLE ステートメントを再確認し、フィールド名が正しく入力されていることを確認してください。
-
外部キーの長さ: 外部キーの名前が最大長の 64 を超えていないことを確認してください。
これらの潜在的な問題に対処することで、エラー コード 1005 を解決し、sira_no テーブルと metal_kod テーブルの間に外部キー関係を正常に確立できます。
以上が外部キー制約の作成時に MySQL エラー 1005 (errno: 150) が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。