sqlyog で「同じ数のソースと参照を選択してください」
-
24-09-2019 - |
質問
sqlyog 経由で外部キー制約を追加しようとしていますが、ソース列と参照列を 1 つだけ選択しているにもかかわらず、このエラーが発生します。
同数のソースとリファレンスを選択してください
この場合それが何を意味するか知っている人はいますか?ソース列と参照列の数が同じであることに注意してください。
解決
SQLYog v9.01 でも同じ問題に遭遇しました。エラー メッセージは誤解を招くものであり、エラーの実際の原因はまったく異なる可能性があります。
これを解決するために私が確認したことは次のとおりです。
- テーブル エンジンのタイプを確認します。両方とも InnoDb である必要があります。
- ターゲットテーブルがソーステーブルと同じでないかどうかを確認してください。
- 参照フィールドのデータ型、長さ、文字セットの照合順序を確認します。
- すでにテーブルにデータがある場合は、その一貫性を確認してください。
たとえば、テーブル A に関連する無関係なデータをテーブル B からすべて削除する必要があります。
DELETE target FROM B AS target LEFT JOIN A USING(id_A) WHERE A.id_A IS NULL
- 最後に、私の場合、制約を正常に作成するにはテーブルをフラッシュする必要がありました。
クエリ ウィンドウから手動で制約を作成すると、エラー タイプに関する詳細情報が得られます。
思い出してください:
ALTER TABLE `B` ADD CONSTRAINT `FK_B` FOREIGN KEY (`id_A`) REFERENCES `A` (`id_A`) ON DELETE CASCADE ;
幸運を!
所属していません StackOverflow