首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从崩溃的mysql表中检索数据

从崩溃的mysql表中检索数据
EN

Stack Overflow用户
提问于 2013-03-08 23:33:14
回答 1查看 5.3K关注 0票数 1

我正在尝试从标记为已崩溃的mysql表中检索一些数据。我正在处理一台机器的恢复备份,所以我不需要担心任何事情。

当我尝试mysqldump表时(我正在使用--where来指定我需要的记录),我得到一个错误:

代码语言:javascript
复制
mysqldump: Got error: 144: Table './[db]/[table]' is marked as crashed and last (automatic?) repair failed when doing LOCK TABLES

如果我使用--lock-tables=false,我会得到相同的错误(但在执行SHOW FIELDS时失败)。

如果我尝试只从表中选择第一条记录,我会得到相同的错误。

如果我运行CHECK TABLE table,我得到以下警告/错误:

代码语言:javascript
复制
warning  | 1 client is using or hasn't closed the table properly |
warning  | Size of indexfile is: 1991678976      Should be: 1024 |
error    | Record-count is not ok; is 30030697   Should be: 0    |
warning  | Found 141967876 deleted space.   Should be 0          |
warning  | Found 3101578 deleted blocks       Should be: 0       |
warning  | Found 34721783 key parts. Should be: 0                |
error    | Corrupt                                               |

这意味着如果我做一个修复表,我将丢失所有的数据!那里应该有30030697条记录...

有什么方法可以让我获得这些数据吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-08 23:44:39

要修复有问题的表,请发出以下命令

myisamchk --recover /var/lib/mysql/DATABASENAME/TABLE_NAME.myi

(其中DATABASENAME是您正在使用的数据库的名称,TABLE_NAME是要检查的表的名称。)

如果这不能完全恢复表,您可以重新运行命令,将-recover替换为-safe- recover,这样会更慢、更彻底。

只有在行级锁或坏写(坏扇区)期间发生严重冲突时,它们才会进行这样的转储。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15297580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档