#INDEXを削除するには外部キー制約を外してから
MySQLで設定したINDEXを削除しようと思ったら
下記のエラーが。
結構、手間だと感じたので手順をメモしておく。
ERROR 1553(HY000):Cannot drop index 'INDEX名': needed in a foreign key constraint
どうやら外部キーが設定してあるためINDEXが削除できないらしい。
ということは...
外部キーが設定してあるカラムのINDEXを削除するには
外部キー削除⇒INDEX削除⇒外部キー再設定の手順が必要!
ちなみに外部キーを削除するために外部キー名の確認も必要となる。
手順としては
外部キー名確認
SHOW CREATE TABLE テーブル名;
外部キー削除
ALTER TABLE テーブル名 DROP FOREIGN KEY 外部キー名;
インデックス名確認
SHOW INDEX FROM テーブル名;
インデックス削除
ALTER TABLE テーブル名 DROP INDEX インデックス名;
外部キー貼り直し
ALTER TABLE テーブル名 ADD FOREIGN KEY(カラム名) REFERENCES 主キーのテーブル名(主キーのカラム名) ON DELETE CASCADE ON UPDATE CASCADE;
おまけ
インデックスを貼りなおすときはさらにインデックス設定を行う。
インデックス設定
ALTER TABLE テーブル名 ADD INDEX 任意のインデックス名(貼りたいカラム名, 貼りたいカラム名);
以上。