phpMyAdminを使用してデータベースを設定しています。2つのテーブル(foo
とbar
)があり、それらの主キーにインデックスが付けられています。foo_bar
主キーを外部キーとして使用して、それらの間にリレーショナルテーブル()を作成しようとしています。
MyISAMとしてこれらのテーブルを作成しましたが、MyISAMが外部キーをサポートしていないことを読んだため、3つすべてをInnoDBに変更しました。すべてのid
フィールドはINT(11)
です。
foo_bar
テーブルを選択したら、[リレーションビュー]リンクをクリックして、FK列をに設定しようとするdatabase.foo.id
とdatabase.bar.id
、「インデックスが定義されていません!」と表示されます。各列の横。
何が欠けていますか?
説明/更新
簡単にするために、phpMyAdminを使い続けたいと思います。私は現在、XAMPPを使用しています。これは、PHP / CSS / Javascriptに集中するのに十分簡単で、phpMyAdminに付属しています。
また、明示的な外部キーを設定することはまだできていませんが、リレーショナルテーブルがあり、次のような結合を実行できます。
SELECT *
FROM foo
INNER JOIN foo_bar
ON foo.id = foo_bar.foo_id
INNER JOIN bar
ON foo_bar.bar_id = bar.id;
FKがデータベースで明示的に定義されていないのは不快なだけです。