MySQL(innoDB)でリレーション設定時に「インデックスは設定されていません」エラー

phpMyAdminでテーブルのリレーション設定をしていて、DELETE ON CASCADEの設定をやっていたところ、ちゃんとインデックスも張っているはずなのに「インデックスは設定されていません」というエラーが出てしまいました。

テーブルの構成やフィールド型を見ていると、リレーション元のフィールドがINT(10)であるのに対し、リレーション先のフィールドがINT(11)になっちゃってました。 おかしいな~。ちゃんと設定したと思ったんだけど。

どうやら以下のような条件下じゃないとリレーションが張れないみたいですね。

  • リレーション元にインデックスが設定してある。
  • フィールド型と長さが同じである。

後で変更してもダメ

じゃー、INT(10)に変更すればいいんでしょ?ってことでphpMyAdmin上の編集画面で変更して再度リレーションを張ってみたんですが、また「インデックスは設定されていません」と同じエラーが。 どうやら後で編集してもダメみたいです。

DROP構文で一度テーブルを削除し、再度テーブルを定義したらうまくいきました。

このページをシェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2011-10-04