MySQL(innoDB)でリレーション設定時に「インデックスは設定されていません」エラー
presented by 役に立つかもしれないBlog
phpMyAdminでテーブルのリレーション設定をしていて、DELETE ON CASCADEの設定をやっていたところ、ちゃんとインデックスも張っているはずなのに「インデックスは設定されていません」というエラーが出てしまいました。
テーブルの構成やフィールド型を見ていると、リレーション元のフィールドがINT(10)であるのに対し、リレーション先のフィールドがINT(11)になっちゃってました。 おかしいな~。ちゃんと設定したと思ったんだけど。
どうやら以下のような条件下じゃないとリレーションが張れないみたいですね。
- リレーション元にインデックスが設定してある。
- フィールド型と長さが同じである。
後で変更してもダメ
じゃー、INT(10)に変更すればいいんでしょ?ってことでphpMyAdmin上の編集画面で変更して再度リレーションを張ってみたんですが、また「インデックスは設定されていません」と同じエラーが。 どうやら後で編集してもダメみたいです。
DROP構文で一度テーブルを削除し、再度テーブルを定義したらうまくいきました。
このページに関連のある記事はこちら
- MySQLサーバーでクエリ履歴をログファイルに保存する方法
- mkdirでディレクトリに「0777」が設定できない場合の解決法
- エラー解消:Fatal error: Call to undefined function spl_autoload_register
- MySQLで「ALTER TABLE ... DROP INDEX」すると「Error 150」が出る問題
- PHPの開発環境(IDE)でベストなのはどれ?
- タグ機能を実現するための便利なデータベース設計を3つ紹介
- PHPでMovableTypeのエントリーDBをSQL検索する方法
- EC-CUBEで好きな時にログを出力する方法
- PHPでMovableType5のデータベースにアクセスする方法
- さくらのVPSのPHP+MySQLを最新のものにアップデート。
- JavaScriptでDATETIME型の日付を得る方法



コメントフォーム