我的某个网络应用程序出现以下错误 -
Query3 failed: Error writing file '/tmp/MY1fnqpm' (Errcode: 28) ... INSERT MailList... (removed the rest of the query for security reasons)
任何想法 - 这是我服务器上的一些硬盘空间问题吗?
答案 0 :(得分:109)
答案 1 :(得分:18)
我们遇到过类似的问题,问题是MySQL使用/ tmp目录满足其需求(它的默认配置)。 / tmp位于自己的分区上,对于大型MySQL请求来说空间太小了。
有关详细信息,请查看以下答案: https://stackoverflow.com/a/3716778/994302
答案 2 :(得分:15)
我有同样的问题,但磁盘空间还可以(只有40%已满)。 问题是inode,我有太多小文件,我的inode已满。
您可以使用df -i
检查inode状态答案 3 :(得分:9)
错误意味着您没有足够的空间来创建MySQL所需的临时文件。
您可以尝试的第一件事是扩展/tmp/
分区的大小。如果您在LVM下,请检查lvextend
命令。
如果您无法增加分区/tmp/
的大小,则可以使用MySQL配置,编辑my.cnf
(通常在/etc/mysql/my.cnf
上)文件并寻找这一行:
tmpdir = /tmp/
根据需要更改它(例如/var/tmp/
)。只需确保有空间并为新目录中的mysql用户分配写权限。
希望这有帮助!
答案 4 :(得分:4)
运行以下代码:
du -sh / var / log / mysql
也许mysql二进制日志填满了内存,如果是,请按照删除旧日志并重启服务器。另外加入my.cnf:
expire_logs_days = 3
答案 5 :(得分:0)
如果另一行不起作用,您也可以尝试使用此行:
du -sh / var / lib / mysql / database_Name
您可能还想与您的主机核实一下,看看它们对您的数据库有多大的支持。
答案 6 :(得分:0)
对于xampp用户:根据我的经验,问题是由名为“0”且位于“mysql”文件夹中的文件引起的。尺寸太大了(我的爆炸到大约256 Gb)。它的删除解决了这个问题。
答案 7 :(得分:0)
如果分区中没有足够的空间,则会发生此错误。通常MYSQL在linux服务器上使用/ tmp。某些查询可能会发生这种情况,因为查找要么返回大量数据,要么甚至可能只是筛选大量数据来创建大型临时文件。
编辑/etc/mysql/my.cnf
tmpdir = / your / new / dir
e.g
tmpdir = / var / tmp
应该分配比/ tmp更多的空间,这通常是它自己的分区。
答案 8 :(得分:0)
今天。我有同样的问题...我的解决方案:
1)检查inode:df -i
我看到了:
root@vm22433:/etc/mysql# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 124696 304 124392 1% /dev
tmpfs 127514 452 127062 1% /run
/dev/vda1 1969920 1969920 0 100% /
tmpfs 127514 1 127513 1% /dev/shm
tmpfs 127514 3 127511 1% /run/lock
tmpfs 127514 15 127499 1% /sys/fs/cgroup
tmpfs 127514 12 127502 1% /run/user/1002
2)我开始查看哪些文件夹使用了最大的inods:
for i in /*; do echo $i; find $i |wc -l; done
很快,我在/ home / tomnolane / tmp文件夹中找到了该文件夹,其中包含大量文件。
3)我删除了/ home / tomnolane / tmp文件夹 利润。
4)选中:
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 124696 304 124392 1% /dev
tmpfs 127514 454 127060 1% /run
/dev/vda1 1969920 450857 1519063 23% /
tmpfs 127514 1 127513 1% /dev/shm
tmpfs 127514 3 127511 1% /run/lock
tmpfs 127514 15 127499 1% /sys/fs/cgroup
tmpfs 127514 12 127502 1% /run/user/1002
没关系。
5)restart mysql service
-没关系!!!!
答案 9 :(得分:0)
我也遇到了同样的错误,问题仅仅是我的虚拟机上没有足够的空间。我删除了一些不必要的文件,然后它又开始工作了。
我的 内存/磁盘空间分配看起来像这样
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 37G 37G 127M 100% /
...