MySQL /写入文件错误(Errcode 28)

我有一个我们的Web应用程序出现以下错误 –

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

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

使用perror命令 :

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

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

我们遇到过类似的问题,问题是MySQL使用了/ tmp目录来满足它的需要(这是默认configuration)。 而/ tmp位于它自己的分区上,这对于大的MySQL请求来说太less了。

有关更多详细信息,请查看此答案: https : //stackoverflow.com/a/3716778/994302

我有同样的问题,但磁盘空间是好的(只有40%满)。 问题是inode,我有太多的小文件,我的inode已满。

您可以使用df -i检查inode状态

这个错误意味着你没有足够的空间来创buildMySQL所需的临时文件

你可以尝试的第一件事就是扩大你的/ tmp /分区的大小,如果你在LVM下,检查lvextend命令

如果你不能增加你的/ tmp /分区的大小,你可以使用MySQLconfiguration,编辑my.cnf文件并寻找这一行

tmpdir = / tmp /

改变它的任何你想要的,只要确保有空间,并为新的目录中的mysql用户分配写权限。

希望这可以帮助

运行以下代码:

du -sh / var / log / mysql

也许MySQL的二进制日志填满了内存,如果是的话,请按照删除旧的日志并重新启动服务器。 另外在my.cnf中添加:

expire_logs_days = 3

如上所述错误代码28意味着没有足够的磁盘空间。 请注意,这是一个服务器错误消息,而不是客户端。 所以确保你正在检查正确的服务器。

如果另一个不起作用,您也可以尝试使用这一行:

du -sh / var / lib / mysql / database_Name

您可能还想与您的主机进行核对,看看它们允许您的数据库有多大。

对于xampp用户:根据我的经验,问题是由名为“0”的文件引起的,位于“mysql”文件夹中。 大小太tooooo(我的爆炸大约256 Gb)。 它的移除解决了这个问题。

进入一个有趣的例子 – 有一个正在使用C3PO(用于池)的Java应用程序和试图连接到删除服务器的Mysql Java连接器。 保持相同的错误(错误代码:28),但validation的东西,如磁盘空间,iNodes和权限。 能够触摸/创build目录中的文件,并有空间来处理。 结果发现服务器(mysqld)在其末尾有空间问题。 你仍然可以build立到服务器的连接 – 但是如果你查询任何东西,你会在服务器上看到错误。 在Java Mysql Connector的情况下,服务器无法发回信息似乎performance为“磁盘空间”错误,但实际上是一个完全不同的问题。 如果你继续在本地服务器/ Unix机器上查找,你永远不会find问题。