XAMPP / MySQL:重启MySQL后无法打开单表表空间文件。\ mysql \ innodb_index_stats.ibd

时间:2013-09-02 14:42:07

标签: php mysql database drupal xampp

我在本地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:Mutexes和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:最支持的文件格式是Barracuda。

     

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在文件路径中使用空格ID:2:。\ drupal \ variable.ibd。无法在文件路径中打开使用空格ID:2的表空间mysql / innodb_index_stats:。\ 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文件,你可以设置innodb_force_recovery> my.cnf中的0

     

InnoDB:并强制InnoDB在这里继续崩溃恢复。

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

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

4 个答案:

答案 0 :(得分: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。

答案 1 :(得分:20)

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

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

..
[mysqld]
innodb_force_recovery = 1 
..

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

此致

答案 2 :(得分:12)

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

  1. 编辑my.cnf - 找到行:# innodb_force_recovery = 2
  2. 注释该行(删除#
  3. 重启MySQL以让MySQL引擎自行修复。
  4. 再次评论innodb_force_recovery行(添加#
  5. 再次重新启动MySQL,您可以在没有只读限制的情况下再次获得完全访问权限。
  6. 来自德国的问候

答案 3 :(得分:0)

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