web-dev-qa-db-ja.com

外部キー関係を設定できません

テーブルの作成時に外部キーを設定できないことがあるという点で、MySQL Workbenchに問題があります。時にはこうなるとは限らないこともあると言います。問題は、FKを入力して参照テーブルを選択すると、参照列を選択できないことです。チェックボックスをクリックできず、ドロップダウンリストが空です。何が問題の原因なのか本当に理解できません。機能しているFKとの違いはまったくわかりません。私はデータ型、名前などをチェックしました、そしてそれらは正しいです。詳しく説明するSSを提供します。緑のマークが付いたキー(id_hem)は問題なく機能し、赤いマークは機能しないものです。

Screenshot of WB

31
Sandokan

同じ問題があり、問題は外部キーインデックスにありました。 MySQLワークベンチは、fkインデックスに対して長すぎる名前を生成することがあります。手動修正が役立ちます。

1
Maksym Polshcha

私はこれが古いことを知っていますが、通常の犯人はNon NullフラグとUnsigned。参照列で有効になっている場合は、外部キー列でこれらを一致させてください。

41
dwkd

同じ問題が発生しました。2つのテーブルを確認しました。問題はタイプでした。2つのテーブルの両方で一致する必要があります。

foraldaテーブル列の場合id_familjer is(INT)
fkblixtenテーブル列id_familjerも(INT)である必要があります。 2つのデータ型が一致しない場合、MySQL Workbenchは列を外部キーとして選択できません。

8
Chathuranga

また、照合順序が異なる場合もあります。これらの2つの列の照合順序が同じかどうかを確認してください。

私の場合は

テーブルのデフォルト(utf8一般を使用)

もう一方は

utf8_unicode_ci

私はutf8_unicode_ciでこれらの2つの列を設定し、それが機能します。

6
Julien

id_familjerは主キーですか?それを設定します。
参照列には、ファミリテーブルの主キーのみが表示されます。

1
fve

外部キーには、主キーと同様の定数が必要です。 AI、主キーは無視できます。主キーにUIがある場合、外部キーにもUIが必要です

UI-> Unsigned Interger AI-> Auto Increment

1
ranix

受け入れられた回答の意味での手動修正:最初に、参照されるテーブルで参照キーのインデックスを作成します。 (これは、各テーブルで使用可能なインデックスタブで行うことができます)。次に、(参照列を選択せず​​に)適用をクリックした後、それに応じて適用のコードを変更します。

例:

ALTER TABLE `SCHEMA_NAME`.`SECOND_TABLE_NAME` (we are creating foreign key in this second table)
ADD CONSTRAINT `FOREIGN_KEY_NAME`
  FOREIGN KEY (`COLUMN_IN_SECOND_TABLE`)
  REFERENCES `SCHEMA_NAME`.`FIRST_TABLE_NAME` (`COLUMN_IN_FIRST_TABLE`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;
0
L Mandadapu

テーブルのプロパティからはforeign keyの値を変更できませんでしたが、SQLコードを使用してみました。

コード:

ALTER TABLE Table2
ADD FOREIGN KEY (Table2_fk_field) REFERENCES Table1(Table1_pk_field);
0
zinon

私の場合、外部キーを設定するすべての列の「照合順序」を変更します。

たとえば、私のFK列の照合順序は「utf8」ですが、参照テーブルも「utf8」に変更します。そして、それは私の問題を解決しました。

お役に立てれば幸いです。

0

どれも動作しませんでした...したがって、外部キーを設定するために自分でSQLクエリを記述しました。問題なく動作しました。その後、右側の「参照列」でプロパティ(クエリで使用したもの)を選択できます。

変な

0
Asqan

1つがintでもう1つがint(6)であるかのように、両方のテーブルでデータ型が同じであることを確認してください。一方に制限があるため機能しません。私はこの問題を抱えていたので、それを修正しました。

0
FSCockers

また、2セント追加するために、同じデータベース名前空間でEER図を作成していて、2つ以上の図に同じ名前のテーブルが含まれている場合にも、これが発生します。

そのため、テーブル(同じ名前の別の図にも存在する)との関係を作成しようとすると、参照テーブルに2回表示されます。どちらも現在の図スキーマを参照しているため、設定できません。関係。

解決策は、他の図でテーブルの名前を変更することです。

0
Karl Viiburg