我的系统正在使用Ubuntu和mysql数据库:
我有一个复杂的mysql选择查询来运行。
mysql -u root -p myDB < query.sql
但是当我试图运行它时它总是给我:
第1行的错误3(HY000):写入文件时出错 '/ mnt / disk / tmp / MY0Wy7vA'(错误代码:28 - 设备上没有剩余空间)
我在磁盘上有11 GB可用空间,当查询正在运行时,我会使用
跟踪它df -h
和
df -hi
跟踪inode
我在查询运行时没有看到磁盘空间有任何减少。始终在tmp文件夹所在的磁盘上始终有11 GB可用空间。
这是df -h
:
ubuntu@ip-10-0-0-177:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 799M 57M 742M 8% /run
/dev/xvda1 30G 24G 5.4G 82% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/xvdf1 50G 39G 11G 80% /mnt/disk
tmpfs 799M 0 799M 0% /run/user/1000
这是df -aTh
:
使用的文件系统类型大小可用使用%安装在 / dev / xvdf1 ext4 50G 39G 11G 80%/ mnt / disk
答案 0 :(得分:0)
看一下错误的部分,表明它实际上是写入/ tmp(见下文)
: Error writing file '/mnt/disk/tmp/MY0Wy7vA
在某些Linux发行版中,/ tmp作为tmpfs(ramdisk)挂载,因此即使您的磁盘空间足够,如果您尝试在那里写太多,也会出现“无空格”错误。
要调查mount,请尝试
$ cat /proc/mounts
OR $ cat / proc / self / mounts 或者更好的
df - aTh
df -h /tmp
要查看隐藏的内容,请尝试
du -sc *。[^。] * | sort -n
除此之外,您可以尝试让MySQL使用不同的临时目录,或者不要将tmpfs用于/ tmp
如果未在 my.cnf 中设置TMPDIR,MySQL将使用系统默认值,通常为/ tmp
您可以更改MySQL tmp目录,如下所示: