Linux

Rails:Mysql:伺服器重啟後:為什麼我會得到“無法創建/寫入文件’/tmp/#sql_4d2b_0.MYI’錯誤”?

  • April 7, 2013

我得到 ErrorCode: 2 我認為是 ENOENT (沒有這樣的文件或目錄)。以下是完整的詳細資訊(來自我的 stackoverflow 文章,由於興趣有限而被權力關閉。也許如果我提到該應用程序是為了幫助程序員編寫就地列表反轉函式。但我收集我現在在正確的地方)。以下是詳細資訊…

這發生在我重新啟動我的 Linode VPS 之後(事實證明我不需要這樣做,但它發現了這個錯誤)。

$ ps auxww | grep mysql
mysql    19755  0.0  4.2 309904 21396 ?        Sl   Mar16  20:50 /usr/libexec/mysqld 
--basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --log-
error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql
/mysql.sock

這看起來是正確的。mysql* 在/usr/bin 中,datadir 是正確的。

當我使用 database.yml 中的憑據啟動 mysql 客戶端時,它按預期工作。但是當我執行 rails 控制台時,在啟動時出現錯誤

data_loader.rb 失敗:無法創建/寫入文件“/tmp/#sql_4d2b_0.MYI”(錯誤程式碼:2)

這不是磁碟空間問題

$ ls -ld /tmp
drwxrwxrwt 11 root root 4096 Apr  1 17:36 /tmp
$ df /tmp
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root       20386924 5496712  14061840  29% /

這是/etc/my.cnf:

[mysqld]
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under different user or group, 
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

而 /etc/rc.d/init.d/mysqld 所做的就是執行 service mysqld start 和 …. stop(是的,這是在 Fedora Core 上)。

這是 Ruby 1.9.2p320 上的 Rails 3.0.8

還要別的嗎?/var/log/mysqld.log 中沒有任何內容

答案在https://stackoverflow.com/questions/11997012/mysql-cant-create-write-to-file-tmp-sql-3c6-0-myi-errcode-2-what-does

在 Fedora 上,mysqld 被分配了它自己掛載的 /tmp 分區,並且一個單獨的程序收集未使用的分區。我的伺服器最近比較安靜,所以分區被刪除了,mysql不能再執行’show full fields from

$$ table $$'

不久前我正在處理同樣的錯誤,我發現我的一些 BIG 查詢正在創建大量臨時文件,因為 (group by、order by、Join,…) 在 /tmp 下的磁碟上。在此期間,如果另一個請求會呼叫查詢,那麼由於 /tmp 空間不足而導致錯誤。我到處尋找解決方案,唯一的一個是增加 /tmp 的大小並調整幾個伺服器變數,它得到了解決。我有 MySQL 5.1,後來我將它升級到 5.5。我希望這能幫到您。

引用自:https://serverfault.com/questions/495488