【发布时间】:2018-10-12 22:22:42
【问题描述】:
我的系统使用 Ubuntu 和 mysql 数据库:
我有一个复杂的 mysql 选择查询要运行。
mysql -u root -p myDB < query.sql
但是当我尝试运行它时,它总是给我:
ERROR 3 (HY000) at line 1: 写入文件时出错 '/mnt/disk/tmp/MY0Wy7vA' (Errcode: 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/磁盘
【问题讨论】:
-
你确定分区有空间吗?这是您的
/tmp分区已满吗?df -h说什么? -
临时存储永久挂载在/mnt/disk?真的吗?
-
@tadman 不完整我更新了答案以查看 df -h 的结果
-
您需要确认
/mnt/disk/tmp/是在哪个文件系统上。试试df -Ph /mnt/disk/tmp/。请注意,查询可以创建一个 非常 大的临时表,然后一旦查询完成或被终止,临时表就会被删除,因此您运行df它看起来像您有足够的空间。 -
值得注意的是,它可能会在操作过程中耗尽空间,然后删除临时文件,因此除非您在运行时检查
df,否则您将无法观察到问题。如果您需要生成 >742MB 的文件作为操作的一部分,这将失败。如果您已安装(或可以获得)watch,请尝试watch df -h以在它运行时对其进行监控。