MySQL InnoDB:无法计算统计信息,因为缺少.ibd文件

时间:2013-09-10 10:55:32

标签: mysql innodb mysqldump

环境:

Windows 7(XAMPP最新) Apache 2.4.4 PHP 5.5 MySQL 5.6.11

我正在尝试从MySQL 5.1备份数据库并将其导入MySQL 5.6。

在MySQL 5.1中,有一些MyISAM和InnoDB表。我使用mysqldump将SQL文件转储出来,使用--add-drop-database switch。

现在当我回到本地主机并使用MySQL工作台导入SQL文件时,会出现错误:

InnoDB: cannot calculate statistics for table "database"."tables" because the .ibd file is missing.

我尝试使用以下方式删除数据库:

drop schema database

它崩溃了MySQL 5.6,错误如下:

2013-09-10 17:18:23 fc4  InnoDB: Warning: MySQL is trying to drop database `database`.``
InnoDB: though there are still open handles to table `database`.`table`.

在my.ini中我设置:

innodb_force_recovery = 4

我试过了:

  • 创建一个具有不同数据库名称的新数据库并再次运行导入,无法创建所有innodb表。
  • 从数据目录中的工作5.1服务器复制所有* .frm表,覆盖现有数据库,重启MySQL 5.6.11,无法访问所有innodb表。
  • 如果我使用engine = InnoDB运行一个create table语句,它将失败并且表已经存在,实际上它不存在。
  • 如果我运行使用InnoDB的drop table语句,它会说table不存在......

有人可以给我一些建议吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

事实证明它似乎是一个MySQL 5.6.11问题,​​我将MySQL改为5.5.30并且一切正常。

答案 1 :(得分:0)

我在Mac OS X上遇到过类似的问题,但是有点奇怪:我在5.6.19之前的版本上运行正常,然后升级到5.6.19,这开始给我上面的错误信息,除了我的表中没有一个使用混合大小写。

事实证明,我的一个数据库使用大写字符作为其第一个字母。这已经很好地工作了很长时间,但是在次要版本升级之后今天早上失败了,并且让我进行了2小时的搜索以找出问题所在。

修复很简单:使用小写版本创建一个符号链接,重新启动mysqld,一切都很好。但是,即使我理解使表保存为大小写的逻辑,也不存在数据库名称不明确的危险,因为操作系统总是会阻止它。