MySQL /写入文件错误(错误代码28)

时间:2011-09-14 11:39:56

标签: mysql logging

我的某个网络应用程序出现以下错误 -

Query3 failed: Error writing file '/tmp/MY1fnqpm' (Errcode: 28) ... INSERT MailList... (removed the rest of the query for security reasons)

任何想法 - 这是我服务器上的一些硬盘空间问题吗?

10 个答案:

答案 0 :(得分:109)

使用perror command

$ perror 28
OS error code  28:  No space left on device

除非您的系统上的错误代码不同,否则您的文件系统已满。

答案 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% /
...