MySQL数据库表损害修复详解

来源:百度文库 编辑:神马文学网 时间:2024/04/29 05:42:54
Wikipedia,自由的百科全书
安装我们的论坛之后,会在mysql数据库中建立两种形式的表,一种是MyISAM,另一种是Heap,目前我们的标准论坛的数
据库中,只有cdb_sessions是Heap形式的,即是我们常说的内存表,这个你可以打开安装时候的install文件夹里面的
discuz.sql文件,可以参照着查看每个表的具体形式!
对于MyISAM形式的表,在数据库中每建立一个表,都会产生三个文件,后缀名分别是MYI(myindex),MYD(mydata),FRM, 其中myi为数据库索引文件的后缀名,myd为数据文件的后缀名,frm为表的格式的后缀名,所以,一个表中的记录会存在myd格式的文件中,表的字段信息会存在frm格式的文件中。 对此种格式的表,一般容易出现myi和myd格式文件的损害,例如: 1、Can‘t open ‘cdb_posts.MYI‘
2、SELECT groupid,url,title FROM cdb_onlinelist WHERE 1 ORDER BY displayorder Error: Got error 127 from storage engine
Errno.: 1030
这两种错误一般都会提示1030错误,即表出现错误,读取不了表中的数据了! 这种错误,你就得修复一下表了!有三种方法可以修复! 第一种,可以使用下载的程序包中的utilities/repair.php进行修复 第二种,可以使用phpmyadmin的修复表的功能进行修复 第三种,对于有主机权限的用户,可以在mysql的dos安装目录下,使用myisamchk命令进行检查 具体的请参照http://kb.discuz.net/index.php?title=%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%E6%8D%9F%E5%9D%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E8%A1%A8 建议先用第一种方法进行修复cdb_sessions是无法修复的表,它只产生一个文件,后缀名为frm,即只有表的格式的文件,这类表的数据只存放在内存中, cdb_sessions表中记录了当前登录的用户的登录信息,因此如果此表发生了损害,说明此表的格式文件损害或者在内存中的数据不可读取了, 一般是读表的时候造成表的锁死了,那只能重建一下,你可以打开安装时候install文件夹里的discuz.sql文件,然后找到cdb_sessions表的建表语句,到phpmyadmin里面执行就行了 这样,有关discuz的两种类型的表的损坏就可以完全修复了!(截图请参照http://www.discuz.net/thread-235998-1-1.html)取自"http://kb.discuz.net/index.php?title=MySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E8%A1%A8%E6%8D%9F%E5%AE%B3%E4%BF%AE%E5%A4%8D%E8%AF%A6%E8%A7%A3"