现在的位置: 首页 > 综合 > 正文

MySQL 坏表处理

2012年04月03日 ⁄ 综合 ⁄ 共 1316字 ⁄ 字号 评论关闭
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的数据重建该表的方式修复



抱歉!评论已关闭.