[英]Cannot drop a mysql table
我收到一个奇怪的错误。 我有一桌animals
,我想放下。 由于外键约束失败,我无法删除表。 我知道在放下桌子之前我必须丢弃外键。 问题是这个表没有外键。 我已经放弃了它们。 SQLyog反映他们已被删除。 但我仍然可以在info架构中找到它们。 好像我把钥匙掉了一半或者别的东西。
如何在不丢弃数据库的情况下删除此表? 我需要重新调整此表,我只想删除它并重新创建它。
编辑:这是来自SQL的错误消息:
Cannot delete or update a parent row: a foreign key constraint fails
你的餐桌animals
是否有外键并不重要。 如果有外键,你可以放弃桌子。
重要的是,还有其他表用外键引用animals
。
以下是您可以检查的方法:
SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE (REFERENCED_TABLE_SCHEMA, REFERENCED_TABLE_NAME) = ('mydatabase', 'animals');
你的评论:
我从来没有听说过外键不可见但仍然阻止表被丢弃的情况。 但我想这是可能的。
如果你这样做,你可以放弃你的表:
mysql> SET FOREIGN_KEY_CHECKS=0;
mysql> DROP TABLE animals;
mysql> SET FOREIGN_KEY_CHECKS=1;
但是,如果InnoDB表空间已处于奇怪状态,我无法预测可能出现的问题。
最后,你可能需要做的就是使用mysqldump转储所有 InnoDB表,然后关闭MySQL守护进程,删除InnoDB表空间文件,然后重新启动并重新导入转储的数据。 这将消除表空间损坏的任何可能性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.