制約を作成しようとすると、次のエラーが発生します。
Error creating foreign key (check data types)
問題は…これらの列のデータ型doが一致することです。
ターゲットはint(10) unsigned NOT NULL
であり、PRIMARY
列です。同じ表のソースはint(10) unsigned DEFAULT NULL
であり、作成しようとしている制約は単純なON DELETE RESTRICT, ON UPDATE CASCADE
。
さて、もちろん、ターゲットはNOT NULL
とソースはNULL
ですが、それは完全に意図的なものであり、私が必要とするものであり、これがどのように問題になるのかわかりません。それが逆かどうか理解できました…
これは本当に問題ですか?どうして?では、どうすれば解決できますか?不要な場合でも値を強制的に挿入したくありません。NULL
列でPRIMARY
を有効にしたくないので、あまり意味がありません。 。
他に何が問題になるのでしょうか?
これはphpmyadminのバグでした。
新しい制約を作成するときは、通常、その名前フィールドを空白のままにしておいてもかまいません。
今回は、まだ不明な理由により、これは機能せず、この無関係なエラーが発生しました。
名前フィールドに入力することでうまくいき、制約を作成することができました。
同じ問題が発生し、たまたまこのスレッドが表示されました。 phpmyadminの最新バージョンにはこのバグがないと感じています。
外部キーの名前は一意である必要があります。同じ制約を別の名前で作成できますが、同じ名前で別の制約を作成することはできません。別のテーブルにもありません。
しかし、エラーステートメントは同じままです:
外部キーの作成中にエラーが発生しました(データ型を確認してください)
...そしてそれは誤解を招くものです。