質問

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 ; 

幸運を!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top