1

环境:

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 开关。

现在,当我返回本地主机并使用 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 运行创建表语句,它将失败并且说表已经存在,实际上它不存在。
  • 如果我运行使用 InnoDB 的删除表语句,它会说表不存在......

任何人都可以给我一些建议吗?

谢谢你。

4

2 回答 2

0

我在 Mac OS X 上遇到了类似的问题,但方式有点奇怪:我在一些 5.6.19 之前的版本上运行良好,然后升级到 5.6.19,它开始给我上面的错误消息,除了没有我的表使用大小写混合。

事实证明,我的一个数据库使用大写字符作为其首字母。这已经工作了很长时间,但今天早上在小版本升级后失败了,让我花了 2 小时搜索出了什么问题。

修复很简单:创建一个小写版本的符号链接,重新启动 mysqld,一切都很好。但是,即使我了解使表大小写安全的逻辑,也不存在数据库名称模棱两可的危险,因为操作系统总是会阻止这种情况。

于 2014-08-31T15:07:12.733 回答
0

原来好像是 MySQL 5.6.11 的问题,我把 MySQL 改成 5.5.30 一切正常。

于 2013-09-16T02:31:13.220 回答