LoginSignup
26
16

More than 3 years have passed since last update.

INDEXを削除するには外部キー制約を外してから

Posted at

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 任意のインデックス名(貼りたいカラム名, 貼りたいカラム名);

以上。

26
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
16