gpt4 book ai didi

mysql - 无法删除 mysql 表

转载 作者:行者123 更新时间:2023-11-29 01:08:48 25 4
gpt4 key购买 nike

我遇到了一个奇怪的错误。我有一个表 animals,我正试图删除它。由于外键约束失败,我无法删除该表。我知道在删除表之前我必须删除外键。问题是这张表没有外键。我已经放弃了。 SQLyog 反射(reflect)它们已被删除。但我仍然可以在信息架构中找到它们。就好像我把 key 掉到一半什么的。

如何在不删除数据库的情况下删除该表?我需要重新键入此表,我只想删除它并重新创建它。

编辑:这是来自 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');

回复你的评论:

我从来没有听说过外键不可见但仍然阻止表被删除的情况。但我认为这是可能的。

如果你这样做,你可以放下你的 table :

mysql> SET FOREIGN_KEY_CHECKS=0;
mysql> DROP TABLE animals;
mysql> SET FOREIGN_KEY_CHECKS=1;

但是,如果 InnoDB 表空间已经处于一种奇怪的状态,我无法预测会出现什么问题。

最终,您可能需要做的清理工作是使用 mysqldump 转储所有您的 InnoDB 表,然后关闭 MySQL 守护进程,删除 InnoDB 表空间文件,然后重新启动并重新导入你转储的数据。这将消除表空间损坏的任何可能性。

关于mysql - 无法删除 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21536329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com