如何解决“Error: MySQL shutdown unexpectedly”错误?
如何解决“Error: MySQL shutdown unexpectedly”错误?
当我打开XAMPP并点击启动MySQL按钮时,它会给我一个错误。我刚刚启动过它,但现在它不工作了。
上午12:19:12 [mysql] 正在尝试启动MySQL应用...
上午12:19:12 [mysql] 检测到状态更改:正在运行
上午12:19:13 [mysql] 检测到状态更改:已停止
上午12:19:13 [mysql] 错误:MySQL意外关闭。
上午12:19:13 [mysql] 这可能是由于端口被阻止、缺少依赖项、不正确的权限、崩溃或其他方法的关闭。
上午12:19:13 [mysql] 单击“日志”按钮以查看错误日志并检查Windows事件查看器以获取更多线索。
上午12:19:13 [mysql] 如果需要更多帮助,请复制并发布此窗口的整个日志
上午12:19:13 [mysql] 到论坛上
这是错误日志的内容:
2013-08-02 12:19:12 4536 [注意] 插件“FEDERATED”已禁用。
2013-08-02 12:19:12 f64 InnoDB: 警告:使用innodb_additional_mem_pool_size已过时。此选项可能会在未来的版本中删除,以及选项innodb_use_sys_malloc和InnoDB的内部内存分配器。
2013-08-02 12:19:12 4536 [注意] InnoDB:关闭InnoDB内存堆
2013-08-02 12:19:12 4536 [注意] InnoDB: Mutexes和rw_locks使用Windows交替函数
2013-08-02 12:19:12 4536 [注意] InnoDB: 压缩表使用zlib 1.2.3
2013-08-02 12:19:12 4536 [注意] InnoDB: 不使用CPU crc32指令
2013-08-02 12:19:12 4536 [注意] InnoDB: 初始化缓冲池,大小为16.0M
2013-08-02 12:19:12 4536 [注意] InnoDB: 缓冲池初始化完成
2013-08-02 12:19:12 4536 [注意] InnoDB: 最高支持的文件格式是Barracuda。
2013-08-02 12:19:12 4536 [注意] InnoDB:ibdata文件中的日志序列号0和0与ib_logfiles中的日志序列号1616798不匹配!
2013-08-02 12:19:12 4536 [注意] InnoDB:数据库没有正常关闭!
2013-08-02 12:19:12 4536 [注意] InnoDB: 开始崩溃恢复。
2013-08-02 12:19:12 4536 [注意] InnoDB: 从.inbd文件中读取表空间信息...
最重要的错误信息在这里:
2013-08-02 12:19:12 4536 [ERROR] InnoDB:
尝试打开先前打开的表空间。
先前的表空间mysql/innodb_table_stats使用空间ID: 1在文件路径: .\\mysql\\innodb_table_stats.ibd。
无法打开使用空间ID: 1的表空间xat/payments在文件路径: .\\xat\\payments.ibd
日志的其余部分:
InnoDB: 错误: 无法打开单表表空间文件.\\xat\\payments.ibd
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继续崩溃恢复。
这些错误的原因是什么,我应该如何纠正它们?
重要提示: 不要删除
ibdata1
文件。这可能会毁坏您的所有数据库。
相反,首先尝试使用 XAMPP 附带的 MySQL 备份文件夹。因此,请执行以下步骤:
- 将文件夹
mysql/data
重命名为mysql/data_old
- 将文件夹
mysql/backup
复制一份并将其命名为mysql/data
- 将所有数据库文件夹从
mysql/data_old
复制到mysql/data
中(排除mysql
、performance_schema
和phpmyadmin
) - 将
mysql/data_old/ibdata1
文件复制到mysql/data
文件夹中 - 从 XAMPP 控制面板启动 MySQL
就这样了!
编辑(2023年1月7日)
正如一些用户所提到的,这是一种紧急解决方案,而不是永久性的解决方案。在恢复数据之后,强烈建议进行备份,并重新安装 XAMPP,因为故障是与 XAMPP 的某些文件的故障相关,而不是与数据库相关。