MySQLで「ALTER TABLE … DROP INDEX」すると「Error 150」が出る問題
MySQLでリレーションを作りながらインデックスをホイホイと作っていると陥ってしまうエラーを紹介します。 このエラーはテーブルのインデックスを削除したい場合にできなくなるというもの。
例えば、productテーブルの”product_id”インデックスを次のように削除するとします。
ALTER TABLE product DROP INDEX product_id;
すると、次のようなエラーが。
[HY000][1025] Error on rename of './mydb/#sql-7dda_a5' to './mydb/product' (errno: 150)
あるいは次のようなエラーが出る場合があります。
[42000][1091] Can't DROP 'product_id'; check that column/key exists
このエラーの原因はインデックスのつくり方でも、テーブルの構造でもなく、今のテーブルに不適切なリレーションが張られていることが原因です。
ですので、インデックスを設定しているフィールドに関連付けられているリレーションを切ってみましょう。
MySQL徹底入門 第4版 MySQL 8.0対応
¥2,090 (2025-04-20 02:51 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)MySQL運用・管理[実践]入門 〜安全かつ高速にデータを扱う内部構造・動作原理を学ぶ
¥3,018 (2025-04-19 09:13 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)3ステップでしっかり学ぶ MySQL入門[改訂第3版]
¥2,860 (2025-04-19 09:13 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)2012-03-02