繁体   English   中英

无法删除mysql表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM