15

我已经在本地 XAMPP 服务器上安装了 Drupal。一切正常,在我重新启动 XAMPP 之前,包含和使用数据库/站点没有问题。从那时起,我在我的日志文件中得到以下信息:

2013-09-02 16:18:46 2544 [注意] 插件 'FEDERATED' 已禁用。

2013-09-02 16:18:46 3e8 InnoDB:警告:不推荐使用 innodb_additional_mem_pool_size。此选项可能会在未来的版本中与选项 innodb_use_sys_malloc 和 InnoDB 的内部内存分配器一起删除。

2013-09-02 16:18:46 2544 [注意] InnoDB: InnoDB 内存堆被禁用

2013-09-02 16:18:46 2544 [注意] InnoDB:互斥锁和 rw_locks 使用 Windows 互锁功能

2013-09-02 16:18:46 2544 [注意] InnoDB:压缩表使用 zlib 1.2.3

2013-09-02 16:18:46 2544 [注意] InnoDB: 不使用 CPU crc32 指令

2013-09-02 16:18:46 2544 [注意] InnoDB:初始化缓冲池,大小 = 16.0M

2013-09-02 16:18:46 2544 [注意] InnoDB:缓冲池初始化完成

2013-09-02 16:18:46 2544 [注意] InnoDB:支持的最高文件格式是梭子鱼。

2013-09-02 16:18:47 2544 [注意] InnoDB: ibdata 文件中的日志序列号 1600614 和 1600614 与 ib_logfiles 中的日志序列号 1600644 不匹配!

2013-09-02 16:18:47 2544 [注意] InnoDB:数据库未正常关闭!

2013-09-02 16:18:47 2544 [注意] InnoDB:开始崩溃恢复。

2013-09-02 16:18:47 2544 [注意] InnoDB:从 .ibd 文件中读取表空间信息...

2013-09-02 16:18:47 2544 [错误] InnoDB:试图打开以前打开的表空间。以前的表空间 drupal/variable 在文件路径:.\drupal\variable.ibd 处使用空间 ID:2。无法打开使用空间 ID 的表空间 mysql/innodb_index_stats:2 在文件路径:.\mysql\innodb_index_stats.ibd

InnoDB:错误:无法打开单表表空间文件 .\mysql\innodb_index_stats.ibd

InnoDB:我们不继续崩溃恢复,因为表可能会变成

InnoDB:如果我们无法将 InnoDB 日志中的日志记录应用到它,则会损坏。

InnoDB:解决问题并启动 mysqld:

InnoDB:1)如果文件有权限问题,mysqld不能

InnoDB:打开文件,你应该修改权限。

InnoDB:2)如果不需要该表,或者您可以从备份中恢复它,

InnoDB:然后你可以删除.ibd文件,InnoDB会做一个正常的

InnoDB:崩溃恢复并忽略该表。

InnoDB:3)如果文件系统或磁盘损坏,您无法删除

InnoDB:.ibd 文件,可以在 my.cnf 中设置 innodb_force_recovery > 0

InnoDB:并强制 InnoDB 在此处继续崩溃恢复。

我通过谷歌寻找解决方案,但这似乎只是drupal数据库的问题,因为如果我删除数据库,它就能够与MySQL连接。

我希望有人可以帮助我:(。

4

4 回答 4

34

将这些文件移动(不要删除)到另一个文件夹中:

innodb_index_stats.frm
innodb_table_stats.frm
slave_master_info.frm
slave_relay_log_info.frm
slave_worker_info.frm

和 .ibd 具有相同文件名的文件:

innodb_index_stats.ibd
innodb_table_stats.ibd
slave_master_info.ibd
slave_relay_log_info.ibd
slave_worker_info.ibd

尝试启动 MySQL。

于 2013-10-13T17:27:25.200 回答
20

您可以通过在 mysql 配置文件中添加一行来解决此问题:my.cnf 或 my.ini(取决于您的发行版)

在 [mysqld] 下添加这一行:innodb_force_recovery = 1

..
[mysqld]
innodb_force_recovery = 1 
..

然后重新启动您的 MySql 服务器。您可能会丢失一些数据,但您会让服务器再次使用您的数据。

问候,

于 2015-04-28T16:01:09.083 回答
17

dev_khan,尝试在启用选项的情况下以只读模式重新启动 MySQL innodb_force_recovery

  1. 编辑 my.cnf - 找到以下行:# innodb_force_recovery = 2
  2. 注释中的行(删除#
  3. 重启 MySQL 让 MySQL 引擎自行修复。
  4. 再次注释该innodb_force_recovery行(添加#
  5. 再次重新启动 MySQL,您将再次拥有完全访问权限,而没有只读限制。

来自德国的问候

于 2016-04-27T09:06:22.840 回答
0

这也发生在 Wordpress 上。它似乎只发生在最新版本中,因为我已经回滚到以前版本的 AMPPS 并且它工作正常而不会抛出这个 innodb 问题。

于 2016-12-02T09:15:55.777 回答