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 子句中指定要更新的目标表 'x')
- 1305PROCEDURE does not exist(PROCEDURE 不存在)
- 1227Access denied; you need (at least one of) the PRIVILEGE(访问被拒绝;需要(至少一项)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)(MariaDB:查询执行被中断(超出 max_statement_time))
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed(连接已被终止)