テーブルの作成時に外部キーを設定できないことがあるという点で、MySQL Workbenchに問題があります。時にはこうなるとは限らないこともあると言います。問題は、FKを入力して参照テーブルを選択すると、参照列を選択できないことです。チェックボックスをクリックできず、ドロップダウンリストが空です。何が問題の原因なのか本当に理解できません。機能しているFKとの違いはまったくわかりません。私はデータ型、名前などをチェックしました、そしてそれらは正しいです。詳しく説明するSSを提供します。緑のマークが付いたキー(id_hem)は問題なく機能し、赤いマークは機能しないものです。
同じ問題があり、問題は外部キーインデックスにありました。 MySQLワークベンチは、fkインデックスに対して長すぎる名前を生成することがあります。手動修正が役立ちます。
私はこれが古いことを知っていますが、通常の犯人はNon Null
フラグとUnsigned
。参照列で有効になっている場合は、外部キー列でこれらを一致させてください。
同じ問題が発生しました。2つのテーブルを確認しました。問題はタイプでした。2つのテーブルの両方で一致する必要があります。
foraldaテーブル列の場合id_familjer is(INT)
fkblixtenテーブル列id_familjerも(INT)である必要があります。 2つのデータ型が一致しない場合、MySQL Workbenchは列を外部キーとして選択できません。
また、照合順序が異なる場合もあります。これらの2つの列の照合順序が同じかどうかを確認してください。
私の場合は
テーブルのデフォルト(utf8一般を使用)
もう一方は
utf8_unicode_ci
私はutf8_unicode_ciでこれらの2つの列を設定し、それが機能します。
id_familjerは主キーですか?それを設定します。
参照列には、ファミリテーブルの主キーのみが表示されます。
外部キーには、主キーと同様の定数が必要です。 AI、主キーは無視できます。主キーにUIがある場合、外部キーにもUIが必要です
UI-> Unsigned Interger AI-> Auto Increment
受け入れられた回答の意味での手動修正:最初に、参照されるテーブルで参照キーのインデックスを作成します。 (これは、各テーブルで使用可能なインデックスタブで行うことができます)。次に、(参照列を選択せずに)適用をクリックした後、それに応じて適用のコードを変更します。
例:
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;
テーブルのプロパティからはforeign key
の値を変更できませんでしたが、SQL
コードを使用してみました。
コード:
ALTER TABLE Table2
ADD FOREIGN KEY (Table2_fk_field) REFERENCES Table1(Table1_pk_field);
私の場合、外部キーを設定するすべての列の「照合順序」を変更します。
たとえば、私のFK列の照合順序は「utf8」ですが、参照テーブルも「utf8」に変更します。そして、それは私の問題を解決しました。
お役に立てれば幸いです。
どれも動作しませんでした...したがって、外部キーを設定するために自分でSQLクエリを記述しました。問題なく動作しました。その後、右側の「参照列」でプロパティ(クエリで使用したもの)を選択できます。
変な
1つがint
でもう1つがint(6)
であるかのように、両方のテーブルでデータ型が同じであることを確認してください。一方に制限があるため機能しません。私はこの問題を抱えていたので、それを修正しました。
また、2セント追加するために、同じデータベース名前空間でEER図を作成していて、2つ以上の図に同じ名前のテーブルが含まれている場合にも、これが発生します。
そのため、テーブル(同じ名前の別の図にも存在する)との関係を作成しようとすると、参照テーブルに2回表示されます。どちらも現在の図スキーマを参照しているため、設定できません。関係。
解決策は、他の図でテーブルの名前を変更することです。