首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能删除db表

问不能删除db表
EN

Database Administration用户
提问于 2015-07-21 10:01:15
回答 1查看 2.5K关注 0票数 3

我试图使用DROP语句删除一个表,但我可以使用not.Instead,我尝试了以下步骤……我从目录中删除了相应表中的.frm和.ibd文件。

然后我使用备份文件中的create语句重新创建table...and,奇怪的是我收到消息说表已经存在(尽管删除了上述文件).

在create语句之后,目录再次拥有.ibd文件。

我不知道该做什么或假设什么。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2015-07-21 12:02:59

首先看看InnoDB体系结构(来自Percona CTO Vadim Tkachenko)

你的问题很简单。您有一个损坏的数据字典条目。在系统表空间文件ibdata1中是表空间ids的列表。

appointments.business_users有一个条目。删除.frm和.ibd of appointments.business_users并不会从数据字典中删除其表空间id。您需要从数据字典中删除该条目。

你为什么还会犯这个错误?尽管您可以使用CREATE TABLE并生成.frm和.ibd文件,但.ibd文件中的表空间id与数据字典中的原始表空间id不匹配。

这里有一些关于如何在适当的地方修复它的旧帖子

如果数据库不太大,可以执行以下操作:

  • mysqldump除了appointments.business_users以外的所有东西
  • 删除所有数据库( mysql架构除外)
  • 停工mysql
  • 删除ibdata1
  • 启动mysql (重新创建的ibdata1)
  • 重新加载mysqldump
  • 手动运行用于CREATE TABLE的appointments.business_users命令

不管怎样,你有一些家庭作业要做。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/107608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档