Home  >  Article  >  Database  >  对MySQL数据表(已损坏)的修复

对MySQL数据表(已损坏)的修复

WBOY
WBOYOriginal
2016-06-07 16:11:25778browse

以下的文章主要讲述的是如何正确修复已损坏的MySQL数据表,主要是了两种方法,一种是check table与 repair table ,一种是通过myisamchk, isamchk ,于断电或非正常关机而导致MySQL(和PHP搭配之最佳组合)数据库出现错误是非常常见的问题。 有两种方法,一种

以下的文章主要讲述的是如何正确修复已损坏的MySQL数据表,主要是了两种方法,一种是check table 与 repair table ,一种是通过myisamchk, isamchk ,于断电或非正常关机而导致MySQL(和PHP搭配之最佳组合)数据库出现错误是非常常见的问题。

有两种方法,一种方法使用MySQL(和PHP搭配之最佳组合)的check table和repair table 的sql语句,另一种方法是使用MySQL(和PHP搭配之最佳组合)提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。

1. check table 和 repair table

登陆MySQL(和PHP搭配之最佳组合) 终端:

MySQL(和PHP搭配之最佳组合) -uxxxxx -p dbname

<ol class="dp-xml"><li class="alt"><span><span class="tag">></span><span> check table tabTest;  </span></span></li></ol>

如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:

<ol class="dp-xml"><li class="alt"><span><span class="tag">></span><span> repair table tabTest;  </span></span></li></ol>

进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。

2. myisamchk, isamchk

其中myisamchk适用于MYISAM类型的MySQL数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个MySQL数据表出现问题时可以使用:

<ol class="dp-xml"><li class="alt"><span><span>myisamchk tablename.MYI </span></span></li></ol>

进行检测,如果需要修复的话,可以使用:

<ol class="dp-xml"><li class="alt"><span><span>myisamchk -of tablename.MYI </span></span></li></ol>

关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL(和PHP搭配之最佳组合)服务器没有访问这个MySQL数据表,保险的情况下是最好在进行检测时把MySQL(和PHP搭配之最佳组合)服务器Shutdown掉。

另外可以把下面的命令放在你的rc.local里面启动MySQL(和PHP搭配之最佳组合)服务器前:

<ol class="dp-xml"><li class="alt"><span><span>[ -x /tmp/MySQL(和PHP搭配之最佳组合).sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI </span></span></li></ol>

其中的/tmp/MySQL(和PHP搭配之最佳组合).sock是MySQL(和PHP搭配之最佳组合)监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/MySQL(和PHP搭配之最佳组合)/MySQL(和PHP搭配之最佳组合).sock,对于使用源码安装则是/tmp/MySQL(和PHP搭配之最佳组合).sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL(和PHP搭配之最佳组合)数据库存放的位置。

需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL(和PHP搭配之最佳组合)服务器必须没有启动!

检测修复所有数据库(表)

MySQL(和PHP搭配之最佳组合)check -A -o -r -p

以上的相关内容就是对如何修复损坏的MySQL数据表的介绍,望你能有所收获。


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn