Help us understand the problem. What is going on with this article?

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

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

以上。

30arare
アラサー未経験からITエンジニアへの転職を目指す人。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした