用的好好的Mysql,突然有一天跟你跳出一句:
Incorrect key file for table '/tmp/#sql_7375_0.MYI'; try to repair it...
是不是很蛋疼?!!下面来干掉这个问题:
问题原因:通常是因为磁盘空间不足。检查mysql 临时文件目录,通常为 /tmp ,看下可用空间大小 (df)
问题解决:
- 清理磁盘,删掉没用的文件(p.s. check your .log dir)
- 停掉mysql服务
service mysql stop
- 进入mysql 临时文件存放目录,重命名 *.myi ->*.myi.old
- 启动mysql服务,
service mysql start
- 重启电脑(卡在这一步一个半小时,网上教程没有这一步,各种debug不得接,没想到重启OK :-) !!)
释疑:关于此问题的根本原因,并未细究,网上众说纷纭,有一说是表损坏,因为当执行查询时如果返回结果过大,超过所设mem 阈值,会在磁盘创建临时表缓存,而若此时磁盘空间不足可能会导致此错误。
纠错: 网上很多关于此问题的解均涉及:
repair table ***
,注意此步骤在现在较常用的innoDB引擎并不支持,所以如果是innoDB这个命令根本不用试了。甜点:
- 查看mysql安装目录:
$ whereis mysql
- 查看mysql 临时文件目录:
mysql> show variables like '%tmp%';
- 查看mysql安装目录:
参考: