0

我现在经常收到错误:

#1 - Can't create/write to file '/tmp/#sql_1a2_3.MYI' (Errcode: 2)

从我的 MySQL 服务器。在我重新启动守护程序之前,它会锁定对数据的任何查询或更改。然后它会自行修复一段时间,然后再次发生。我尝试在具有 777 权限的 tmp 目录中的文件上使用 touch,并且我还尝试将 tmp 目录移动到 MySQL 目录 (/var/lib/mysql/tmp) 中:

MySQL 错误 1 ​​(HY000) 无法创建文件 Errcode 2

两者都没有奏效。我的 tmp 目录远未满,有 90% 以上的可用空间,因此此问题的最佳答案不适用:

MySQL:无法创建/写入文件'/tmp/#sql_3c6_0.MYI'(Errcode:2) - 它甚至意味着什么?

4

1 回答 1

1

我已经看到这是由在具有许多连接的复杂查询期间创建的巨大临时表引起的。想想你的应用程序中哪里可能存在这样的查询,并在监控磁盘活动/可用空间的同时尝试触发它。这就是我们发现正在发生的事情的方式。作为一种解决方案,您可以为临时表(默认为 /tmp)提供更多空间,或者尝试重构查询。/tmp 是空的并且当您查看它时有足够的空间这一事实并不意味着它在查询执行期间没有全部被消耗掉。在我们的例子中,/tmp 可能会占用磁盘上的所有可用空间,并且它实际上是在执行这个特别复杂的查询期间发生的,并因与您的错误类似的错误而中断,因为即使这样还不够。

于 2013-02-12T15:11:38.223 回答