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;
同じデータベースの他の項目
- 1129Host 'host' is blocked because of many connection errors(接続エラーが多いためホスト 'host' がブロックされた)
- 1194Table 'name' is marked as crashed and should be repaired(テーブル 'name' がクラッシュとしてマークされ修復が必要)
- 1615Prepared statement needs to be re-prepared(プリペアド文の再準備が必要)
- 3948Loading local data is disabled; this must be enabled on both the client and server sides(ローカルデータの読込みは無効。クライアントとサーバーの両側で有効化が必要)
- 1075Incorrect table definition; there can be only one auto column and it must be defined as a key(不正なテーブル定義。自動採番列は 1 つのみでキーとして定義が必要)
- 1055Expression not in GROUP BY (only_full_group_by)(GROUP BY にない式)
- 1267Illegal mix of collations(照合順序の不正な混在)