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

lei*_*sel 16 php mysql database xampp drupal

我在我的本地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年9月2日十六点18分47秒2544 [注] InnoDB的:日志序列号1600614和ibdata文件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文件,你可以在my.cnf中设置innodb_force_recovery> 0

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

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

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

Pan*_*los 34

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

innodb_index_stats.frm
innodb_table_stats.frm
slave_master_info.frm
slave_relay_log_info.frm
slave_worker_info.frm
Run Code Online (Sandbox Code Playgroud)

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

innodb_index_stats.ibd
innodb_table_stats.ibd
slave_master_info.ibd
slave_relay_log_info.ibd
slave_worker_info.ibd
Run Code Online (Sandbox Code Playgroud)

尝试启动MySQL.


Cha*_* P. 20

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

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

..
[mysqld]
innodb_force_recovery = 1 
..
Run Code Online (Sandbox Code Playgroud)

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

问候,


小智 14

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

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

来自德国的问候