web-dev-qa-db-ja.com

「外部キーの作成中にエラーが発生しました(データタイプをチェックしてください…)」が一致します…

制約を作成しようとすると、次のエラーが発生します。

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を有効にしたくないので、あまり意味がありません。 。

他に何が問題になるのでしょうか?

2
Marshall Banana

これはphpmyadminのバグでした。

新しい制約を作成するときは、通常、その名前フィールドを空白のままにしておいてもかまいません。

今回は、まだ不明な理由により、これは機能せず、この無関係なエラーが発生しました。

名前フィールドに入力することでうまくいき、制約を作成することができました。

3
Marshall Banana

同じ問題が発生し、たまたまこのスレッドが表示されました。 phpmyadminの最新バージョンにはこのバグがないと感じています。

外部キーの名前は一意である必要があります。同じ制約を別の名前で作成できますが、同じ名前で別の制約を作成することはできません。別のテーブルにもありません。

しかし、エラーステートメントは同じままです:

外部キーの作成中にエラーが発生しました(データ型を確認してください)

...そしてそれは誤解を招くものです。

3
Rakesh