文章分析與介紹關于在使用MySQL中提示“Can’t create/write to file xxx (Errcode: 13)”錯誤問題的原因與處理方法.
最近碰到一個 MySQL不能創(chuàng)建臨時文件的錯誤,解決過程中學到一些知識,這里分享一下,希望對碰到類似問題的同學有所幫助.
關于MySQL臨時文件:
1、MySQL使用環(huán)境變量TMPDIR的值作為保存臨時文件的目錄的路徑名。如果未設置TMPDIR,MySQL將 使用系統(tǒng)的默認值,通常為/tmp、/var/tmp或/usr/tmp。
2、MySQL會以隱含方式創(chuàng)建所有的臨時文件。這樣,就能確保中止mysqld時 會刪除所有臨時文件。
3、 進行排序時(ORDER BY或GROUP BY),MySQL通 常會使用1個或多個臨時文件。
4、對于某些SELECT查詢,MySQL還會創(chuàng)建臨時SQL表,它們不是隱含表,并具有SQL_*形式的名稱.
分析問題:
如果某些查詢遇 到”Can’t create/write to file xxx (Errcode: 13)“類型的錯誤,它意味著MySQL不能為臨時目錄下的結果集創(chuàng)建臨時 文件.
Google查詢得知以下三種情況可能會導致此問題:
①、%TMPDIR% 文件夾權限不夠。
②、%TMPDIR% 文件夾的磁盤滿了,文件寫不 進去了,清空 TEMP 文件夾;
③、第三方限制(如殺毒軟件的限制)
解決方法:
方法一、在my.inip配置文件中查找”[mysqld]“,在其下添加一行:
tmpdir=%你想指定的MySQL臨時文件目錄(例如 D:temp)%
方法二、如果機器上裝了殺毒軟件,可以嘗試排除對臨時文件的掃描。
360殺毒(已測試過):
設置—>>>白名單設置—>>>添加目錄—>>>%TMPDIR%–>>> 確定。
麥咖啡,網上信息,未親自測試過.
打開McAfee VirusScan控制臺->按訪問掃描程序->屬性->所有進程->檢測項->排除項->添加%TMPDIR%,排除時間選擇讀取時寫入時。
資源:
A.4.4. MySQL將臨時文件儲存在哪里—dev.mysql.com/doc/refman/5.1/zh/problems.html#temporary-files
A.2.12. 無法創(chuàng)建文件/寫入文件—dev.mysql.com/doc/refman/5.1/zh/problems.html#cannot-create
MySQL更多問題—dev.mysql.com/doc/refman/5.1/zh/problems.html
修改方法
下面介紹兩種MySQL修復表的方法。
1. myisamchk
使用myisamchk必須暫時停止MySQL 服務器。例如,我們要檢修blog數(shù)據(jù)庫。執(zhí)行以下操作:
# service mysql stop(停止MySQL)
# myisamchk -r /datawhere/blog/*MYI
# service mysql start myisamchk 會自動檢查并修復數(shù)據(jù)表中的索引錯誤。
2. mysqlcheck
使用mysqlcheck無需停止MySQL,可以進行熱修復,操作步驟如下,檢修 blog庫.
# mysqlcheck -r -uroot -p blog //Vevb.com
注意,無論是 myisamchk還是mysqlcheck,一般情況下不要使用-f強制修復,-f參數(shù)會在遇到一般修復無法成功的時候刪除部分出錯數(shù)據(jù)以嘗試修復,所以,不到萬不得已不要使用-f,如果你怕使用命令有問題,可以使用phpmyadmin直接進行修復.
新聞熱點
疑難解答
圖片精選