一、报错描述

执行sql的时候发现:Error writing file '/tmp/XXXX' (Errcode: 28 - No space left on device)

二、错误原因

这种情况就是mysql在关联大表的时候,需要的存储空间大于当前服务器的剩余磁盘空间

三、解决方案

要么清理一下,要么换个空间大点的存储位置。

  1. 如果没有修改过mysql默认的缓存路径的话,默认是在/tmp/下的,如果占用较小,就看看这个磁盘其他位置,df -h来查看。
  2. 更换存储位置,如果有挂载其他磁盘,可以迁过去
# 1、在挂载磁盘上创建一个文件夹
mkdir /bdata/mysql_tmp

# 2、给权限
chown mysql.mysql /bdata/mysql_tmp -R
chmod 777 -R /bdata/mysql_tmp -R

# 3、打开mysql的配置文件
vim /etc/my.cnf 

# 4、在文件里面修改缓存路径
[mysqld]

tmpdir = /bdata/mysql_tmp

# 5、重启mysql
service mysqld restart