1. 程式人生 > >mysql報錯! Can't create/write to file '/tmp/#sql_c62_0.MYI' (Errcode: 17

mysql報錯! Can't create/write to file '/tmp/#sql_c62_0.MYI' (Errcode: 17

轉載自:https://blog.csdn.net/mchdba/article/details/52122724

同事連線資料庫,查詢資料報錯了,Can't create/write to file '/tmp/#sql_89b_0.MYI'  (Errcode: 177 - File exists)

而且我自己去連線,正常:

我讓他關閉客戶端連線,再重新執行查詢語句,也是報一樣的錯誤。

(1)      去mysql的error日誌裡面,沒有看到異常資訊;

(2)      在mysql的slow慢查詢sql裡面,也沒有看到異常資訊;

(3)      Mysql所在的伺服器的負載也不高,很低;

(4)      Show full processlist; 也沒有看到正在卡住的sql記錄;

(5)      show engine innodb status\G也沒有看到死鎖或者其他異常資訊;

那麼問題在哪裡呢?去看下報錯的原始檔案吧

[[email protected]_dbm1_13_11 ~]# ll /tmp/

total 4204

-rw-rw-r--. 1 zabbix zabbix      22 Aug 4 16:31 cu.txt

-rw-r--r--. 1 root   root     1469 May 18 15:59 localhost-mysql_cacti_stats.txt:3317

-rw-rw-r--. 1 zabbix zabbix 4283869Aug  4 16:32 -mysql_cacti_stats.txt:3317

-rw-r--r-- 1 root   root       101 Jul 28 15:06 percona-version-check

-rw-rw---- 1 mysql  mysql        0 Aug 4 08:03 #sql_89b_0.MYD

-rw-rw---- 1 mysql  mysql     1024 Aug 4 08:03 #sql_89b_0.MYI

[[email protected]_dbm1_13_11 ~]#

看到時間是8月4日早上8點3分產生的臨時檔案,現在已經下午4點了,還存在沒有釋放,奇怪了,難道是當時一個複雜的慢查詢導致的嗎?或者是其它客戶端的詭異問題?

解決辦法:

嘗試下移走這2個臨時檔案,應該就可以了。

[[email protected]_dbm1_13_11 ~]# mv/tmp/#sql_89b_0.* /home/mysql/

[[email protected]_dbm1_13_11 ~]#

然後讓同事再查詢,就ok了,他能正常執行查詢sql語句了。

猜測是這樣的,在早晨8:03分的時候,有個sql發起查詢,然後消耗資源比較多,但是客戶端突然因為每種原因死掉了,導致mysql執行查詢生成的這個臨時檔案卡住了無法返回,然後就一直存在著。等下次去執行相同的記錄,那麼就會告知臨時檔案已經存在了,無法執行了。

而且也解釋通了啥別人的電腦的客戶端連線資料庫沒有報錯,就那個同事的客戶端連線報錯的原因,是因為他的客戶端分配的臨時空間被佔據了,而我mv移掉他以前佔據的空間的時候,他重新執行查詢就能順利執行成功了。