我从数据中删除后无法重新创建innodb数据库,因为:"表已经存在"

时间:2016-05-02 05:58:03

标签: mysql database innodb

我知道这与shroedingers表问题有相似之处,但它达到了父亲的目的。

我使用的是Mysql Server 5.6,其中启用了innodb和每个表的文件。

我最近从mysql / server / data文件夹中删除了一些数据库。它们太大而且服务器在我尝试用掉落时就消失了,所以我觉得这是最干净的选择。

现在我尝试从sql文件重新创建数据库,然后收到消息"表xy已经存在"对于数据库中的所有表,即使我检查了数据文件夹,并且在我启动文件之前它是空的。在文件运行时,会创建数据库的idb文件,而不是frm,因此我最终得到了无法填充的表空间。

显然,服务器仍然有一些关于已删除的数据库的信息保存在我需要摆脱的地方,我只是不知道在哪里寻找它。

这里是方案文件的摘录

  Collections.sort(myArrayList, new CompareAge());
  YourObject maxAgeObj = myArrayList.get(myArrayList.size() - 1); //Retrieve the last object
  YourObject minAgeObj =  myArrayList.get(0);

2 个答案:

答案 0 :(得分:1)

文件ibdata1中的系统结构包含有关所有InnoDB表的信息。删除数据库目录时没有清除它。

计划A :(这有一定的风险。)使用mysqldump(或其他一些东西)转储剩余的表。停止mysqld;删除ibdata1;重启mysqld;重新加载转储。

计划B :(低风险。)放弃这些数据库名称。

计划C :(严重的风险。)聘请专家(而不是我)来摆弄ibdata1。 (建议:Percona,MariaDB,Oracle。)

计划D :(未知风险。)进行一些网络搜索。有人可能已经克服了这个问题。

答案 1 :(得分:0)

直接在data文件夹中删除文件是一种不好的做法。请记住,文件有日志。这是我的建议:

  • 从回收站中撤消或恢复已删除的文件data文件夹

  • 确保您位于删除它们的同一服务器中(ib_logfileibdata等应该在那里)

  • 尝试再次删除表格

请告诉我这些是否有效。