Cannot drop index ‘idx_id’: needed in a foreign key constraintとでてインデックスが削除出来なくなりました

プログラミング


MySQL logo / tmolini

indexを色々試していたら削除出来なくなってしまいました

こんな感じで

~~~
mysql> ALTER TABLE table_name drop INDEX idx_id;
Cannot drop index ‘idx_id’: needed in a foreign key constraint
~~~

と出てしまい、indexが削除出来ません。
どうやら外部キーが影響しているみたいです

外部キーの確認

~~~
mysql> SHOW CREATE TABLE table_name;
—- 省略 —-
CONSTRAINT `table_name_ibfk_1` FOREIGN KEY (`id`) REFERENCES `foreign_table` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
—- 省略 —-
~~~

多分こいつが原因ですね
あとで戻さなきゃ行けないのでコピっておきます

外部キーの削除

~~~
mysql> ALTER TABLE table_name drop FOREIGN KEY table_name_ibfk_1;
Query OK, 130380 rows affected (9.34 sec)
Records: 130380 Duplicates: 0 Warnings: 0
~~~
削除出来ました、indexの削除出来るか試してみます

indexの削除

~~~
mysql> ALTER TABLE table_name drop INDEX idx_id;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
~~~

ようやく削除できた・・・色々試したいのにいちいちこれをしなきゃ行けないのは大変だ・・・

外部キーを戻しておしまい

~~~
mysql> alter table table_name add foreign key FOREIGN KEY (`id`) REFERENCES `foreign_table` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
Query OK, 130380 rows affected (8.80 sec)
Records: 130380 Duplicates: 0 Warnings: 0
~~~

コメント

タイトルとURLをコピーしました