mysql 文件中的信息不正确:(损坏)错误

mysql 文件中的信息不正确:(损坏)错误

我办公室的一台监控服务器最近遭遇了断电。这次断电导致一些数据库表损坏。

我已经使用“use_frm”选项成功修复了 3-4 个表,但是仍然有 3 个表似乎已严重损坏,并且没有响应 mysql REPAIR 命令(无论是否使用 use_frm)

mysql> REPAIR TABLE poller_item;
+-------------------+--------+----------+----------------------------------------------       ------------+
| Table             | Op     | Msg_type | Msg_text                                                    |
+-------------------+--------+----------+-------------------------------------------------  ---------+
| cacti.poller_item | repair | Error    | Incorrect information in file:    './cacti/poller_item.frm' |
| cacti.poller_item | repair | error    | Corrupt                                                      |
+-------------------+--------+----------+-------------------------------------------------  ---------+

在这种情况下还有其他方法可以修复表格吗?

MySQL 版本

mysql  Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (x86_64) using readline 6.1

答案1

Incorrect information in file:    './cacti/poller_item.frm'

.frm文件存储表格格式。试试这个:

  • 停止 MySQL
  • 备份poller_item.frm, poller_item.MYD,poller_item.MYI
  • 删除poller_item
  • 启动 MySQL
  • poller_item使用CREATE TABLE语句 重新创建表仙人掌数据库 (使用您正在运行的相应版本)
  • 停止 MySQL
  • poller_item.MYD,复制poller_item.MYI到 datadir
  • 再次启动 MySQL

答案2

先备份然后尝试 MYISAMCHK(1):

myisamchk --recover tbl
myisamchk --save-recover tbl

答案3

我在 mariadb (mysql) 中遇到了同样的问题,有 5 个表“正在使用”。

检查或修复后的消息

Incorrect information in file:    './tablename.frm'
Corrupted 

在数据库文件夹中,这些 frm 文件的大小为 0。因此,我停止了 mariadb 服务,然后用备份中的 frm 文件覆盖它们。然后我重新启动 mariadb 服务,表就修复了。注意:首先,我用只有 1-2 行数据的表测试了这个解决方案,以确保它有效。我也有 azure 备份,所以如果那不起作用,我可以回滚到上一小时。

祝你好运!

相关内容