3730: Cannot drop table referenced by a foreign key constraint(外部キー制約で参照されているテーブルは削除できない)
MySQL意味
別のテーブルの外部キーが参照しているため、テーブルを削除できない。参照が存在する限り DROP は阻止される。
原因
FK で紐付いた子テーブルがまだ存在する状態で親テーブルを削除しようとした、依存関係の順序を守っていない、先に外部キーを削除していない。
対処方法
先に参照している外部キーを削除する: ALTER TABLE child_table DROP FOREIGN KEY fk_name; その後テーブルを削除する。依存するテーブル/制約を特定する: SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = 'my_table'; 一括操作では SET FOREIGN_KEY_CHECKS = 0; を一時的に使えるが、注意して使い、終了後に 1 に戻す。
同じデータベースの他の項目
- 1093You can't specify target table 'x' for update in FROM clause(FROM 句で更新対象テーブルは指定できない)
- 1305PROCEDURE does not exist(プロシージャが存在しない)
- 1227Access denied; you need (at least one of) the PRIVILEGE(アクセス拒否。権限が必要)
- 2013Lost connection to MySQL server during query(クエリ中に MySQL サーバーとの接続が失われた)
- 1153Got a packet bigger than 'max_allowed_packet' bytes(max_allowed_packet より大きいパケットを受信)
- 1969MariaDB: Query execution was interrupted (max_statement_time exceeded)(クエリの実行が中断された)
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed(接続が強制終了された)