MySQL服务器更改临时目录

最近操作一个有超过180W记录的数据库,随机查询几条记录老是报错,报错提示如下:

mysql> select * from XXXXXXXX order by rand() limit 100;
ERROR 126 (HY000): Incorrect key file for table '/tmp/#sql_3f89_0.MYI'; try to repair it

放狗搜了一把之后,发现是临时文件目录剩余容量不足导致的。查看配置文件可知,Debian8系统用apt安装的MySQL,默认的tmpdir是在/tmp,恰好我这台VPS上的/tmp只有128MB,180W条记录,肯定不够。

解决办法也很简单,更改MySQL的临时文件目录就行了。用apt安装的MySQL默认配置文件在/etc/mysql/my.cnf,只需更改其中一项就行,找到这么一行:

tmpdir = /tmp

改成别的目录就行,我是将其切换到了/var/tmp/mysql。

切换到别的目录之后,记得给相应的权限:

chown mysql:mysql /var/tmp/mysql/

保存之后,重启MySQL服务器,再次执行就不会报错了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注