从数据中删除后无法重新创建 innodb 数据库,因为:"Tables already exist"

Cannot recreate innodb database after I deleted it from data because :"Tables already exist"

我知道这与 shroedingers table 问题有相似之处,但它比那个更重要。

我正在使用 Mysql Server 5.6,并启用了 innodb 和 file per table。

我最近从 mysql/server/data 文件夹中删除了一些数据库。它们太大了,当我尝试用一​​个 drop 来做时服务器就消失了,所以我认为这是最干净的选择。

现在我正在尝试从 sql 文件重新创建数据库,并且我得到了数据库中所有 table 的消息 "table xy already exists",即使我检查过数据文件夹,在我启动文件之前它是空的。由于文件是 运行,因此创建了数据库的 idb 文件,而不是 frm,所以我最终得到 table 我无法填充的空格。

显然服务器上还有一些关于已删除数据库的信息保存在某个地方,我需要删除这些信息,只是不知道去哪里找。

这里是方案文件的摘录

-- MySQL dump 10.13  Distrib 5.6.13, for Linux (x86_64)
--
-- Host: localhost    Database: test
-- ------------------------------------------------------
-- Server version   5.6.13-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,     FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `articles`
--

 DROP TABLE IF EXISTS `articles`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `articles` (
  `articlesID` int(5) NOT NULL DEFAULT '0',
  PRIMARY KEY (`articlesID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;enter code here

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

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

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

C 计划:(严重风险。)聘请专家(不是我)来 fiddle 和 ibdata1。 (建议:Percona、MariaDB、Oracle。)

计划 D:(未知风险。)进行一些网络搜索。应该有人攻克了这个问题。

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

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

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

  • 再次尝试删除 table

请告诉我这些东西是否有效。