他の 2 つのテーブルの主キーを参照する 2 つの外部キーを持つテーブルを MySQL に作成しようとしていますが、errno: 150
エラーが発生し、テーブルは作成されません。作成した。
以下は 3 つのテーブルすべての SQL です:
リーリーP粉5628459412023-10-17 12:24:03
ALTER TABLE ADD FOREIGN KEY:
のときにエラー 150 が発生しないようにするには、これらの条件を満たす必要があります。
ENGINE=InnoDB をサポートする必要があります。他のストレージ エンジンは外部キー定義を黙って無視するため、エラーや警告は返されませんが、FK 制約は保存されません。
PRIMARY KEY または
UNIQUE KEY であることが最善です。
REFERENCES Parent(a,b,c) の場合、親の PK を
(a,c,b) の順序で列に定義してはなりません。
< /p>
UNSIGNED である場合、子テーブル フィールドの対応する列に必ず
UNSIGNED を定義してください。
VARCHAR(10) は
VARCHAR(20) を参照でき、その逆も可能です。
リーリー
これは、一致しない値をゼロ (0) 返す必要があります。明らかに、このクエリは一般的な例であるため、テーブル名と列名を置き換える必要があります。
TEMPORARY テーブルにすることはできません。
ON DELETE SET NULL オプションを使用して宣言されている場合、FK 列は NULL 可能である必要があります。
SET FOREIGN_KEY_CHECKS = 0; が一貫性のない関係として誤って定義された過去の変更が原因である可能性があります。これらの問題のある FK を特定する方法については、以下の @andrewdotn の回答を参照してください。