DBAtlas · データベース運用アトラス

1553: Cannot drop index needed in a foreign key constraint(外部キー制約で必要なインデックスは削除できない)

MySQL

意味

外部キー制約が必要とするインデックスを削除しようとしている。InnoDB は FK が依存するインデックスの削除を許可しない。

原因

InnoDB では、すべての外部キーは参照元の列にインデックスを必要とする。DROP INDEX でそのインデックスを削除すると FK 制約の裏付けがなくなるため、拒否される。通常、テーブルの再編成 (インデックスの整理) 中に発生する。

対処方法

先に外部キー制約を削除してから、インデックスを削除する: ALTER TABLE my_table DROP FOREIGN KEY fk_name; 続いて DROP INDEX idx_name ON my_table; 必要に応じて、別の適切なインデックスに依存するよう FK を再作成する。既存の FK の一覧: SELECT constraint_name, table_name FROM information_schema.key_column_usage WHERE referenced_table_name IS NOT NULL;

DBAtlas で開く →

同じデータベースの他の項目