MySQL(innoDB)でリレーション設定時に「インデックスは設定されていません」エラー
phpMyAdminでテーブルのリレーション設定をしていて、DELETE ON CASCADEの設定をやっていたところ、ちゃんとインデックスも張っているはずなのに「インデックスは設定されていません」というエラーが出てしまいました。
テーブルの構成やフィールド型を見ていると、リレーション元のフィールドがINT(10)であるのに対し、リレーション先のフィールドがINT(11)になっちゃってました。 おかしいな~。ちゃんと設定したと思ったんだけど。
どうやら以下のような条件下じゃないとリレーションが張れないみたいですね。
- リレーション元にインデックスが設定してある。
- フィールド型と長さが同じである。
後で変更してもダメ
じゃー、INT(10)に変更すればいいんでしょ?ってことでphpMyAdmin上の編集画面で変更して再度リレーションを張ってみたんですが、また「インデックスは設定されていません」と同じエラーが。 どうやら後で編集してもダメみたいです。
DROP構文で一度テーブルを削除し、再度テーブルを定義したらうまくいきました。
2011-10-04