MySQL 坏表处理

MySQL数据表坏掉了。应用程序连接数据库提到如下的异常:

1 java.sql.SQLException: Can't open file: 'kq_attTemp.MYI'. (errno: 145)
2         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2921)
3         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1570)
4         at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
5         at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)
6         at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)
7         at com.mysql.jdbc.Statement.executeQuery(Statement.java:822

解决方法:
进入MySQL,使用MySQL修复命令修复该表。
CHECK TABLE `music`//检查表
REPAIR TABLE `music`//修复表
OPTIMIZE TABLE `music`//优化表

使用第二条修复命令就解决了问题。但是表却坏得莫名其妙的……
以下是其它网友提供的解决方案,但是不保证一定有效:
用命令myisamchk可以检查并修复MyISAM表
如:
myisamchk music
myisamchk 
--recover music

如果是InnoDB表,可以在mysql
>提示符下用
CHECK TABLE来检测是否有问题
如果有问题,可以用mysqldump导出,drop table, 用dump的数据重建该表的方式修复


posted on 2009-06-03 08:43  CodingME!  阅读(1848)  评论(0编辑  收藏  举报

导航

Blog