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
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`//优化表
REPAIR TABLE `music`//修复表
OPTIMIZE TABLE `music`//优化表
使用第二条修复命令就解决了问题。但是表却坏得莫名其妙的……
以下是其它网友提供的解决方案,但是不保证一定有效:
用命令myisamchk可以检查并修复MyISAM表
如:
myisamchk music
myisamchk --recover music
如果是InnoDB表,可以在mysql>提示符下用
CHECK TABLE来检测是否有问题
如果有问题,可以用mysqldump导出,drop table, 用dump的数据重建该表的方式修复
如:
myisamchk music
myisamchk --recover music
如果是InnoDB表,可以在mysql>提示符下用
CHECK TABLE来检测是否有问题
如果有问题,可以用mysqldump导出,drop table, 用dump的数据重建该表的方式修复
posted on 2009-06-03 08:43 CodingME! 阅读(1848) 评论(0) 编辑 收藏 举报