Can’t create/write to file ‘c:\temp/#sql-XXX.MYI′
這兩天在使用MySQL做點東西,可是從前天開始,系統(tǒng)啟動時經(jīng)常出現(xiàn)類似Can’t create/write to file ‘c:\temp/#sql-XXX.MYI′ (Errcode: 13)"的錯誤,我以為可能是我的系統(tǒng)的問題,于是重啟應用和MySQL,該問題還是陸陸續(xù)續(xù)會出現(xiàn),但又不是始終出現(xiàn)。我注意到該問題一般都在查詢數(shù)據(jù)量比較大的時候才出現(xiàn),我想應該是在做大數(shù)據(jù)量的數(shù)據(jù)庫操作,MySQL想往temp目錄寫臨時文件時,則于某種原因無法寫入導致了該問題,于我,我嘗試著著按以下步驟進行分析處理。
一、這可能是MySQL以前生成的臨時文件還存在,但具有只讀屬性導致無法寫入。我仔細查看temp目錄,卻沒有找到擴展名為“MYI”的文件,于是把臨時目錄下的所有文件都刪除。重新啟動MySQL和應用系統(tǒng),但問題還是會出現(xiàn);
二、我懷疑是不是temp目錄具有只讀屬性或?qū)ySQL用戶禁止寫入,但我的在WindowsXP上,而且臨時目錄里會有別的系統(tǒng)產(chǎn)生的臨時文件,說明該目錄是可以讀寫的,而且我啟動MySQL用的是超級用戶,所以不存在目錄無寫權限的問題;
三、會不會是殺毒軟件的實時文件保護導致無法寫臨時文件呢?因為我的殺軟的病毒庫是天天升級的,前幾天也系統(tǒng)沒出現(xiàn)過該問題,而這幾天可以,是不是我升級了病毒庫后,殺軟阻止了MySQL產(chǎn)生臨時文件呢?我在殺軟中把temp目錄設為不檢測,再重啟MySQL和應用,再看著temp目錄,里面會出現(xiàn)#sql-XXX.MYI或#sql-XXX.MYD等臨時文件,應用系統(tǒng)啟動正常??磥韱栴}就出在殺軟禁止MySQL產(chǎn)生“MYI”或“MYD”臨時文件導致了該問題。
至此,我以為問題就這樣解決了,可是在接下來的一次啟動中,我看到臨時文件產(chǎn)生了,我就在臨時文件#sql-XXX.MYI上點右鍵,想看看文件屬性,這一點可好,應用系統(tǒng)又出現(xiàn)了原來的錯誤,咋回事?我再次停掉應用然后重啟,重啟過程中不對臨時文件作任何操作,應用啟動都正常。這是為什么呢?
我分析原因可能是這樣的:MySQL產(chǎn)生的臨時文件存在時間很短,MySQL在產(chǎn)生臨時文件后需要馬上使用馬上刪除,這時候如果有另外一個軟件對這些臨時文件進行訪問或操作的話,MySQL就無法及時獲得文件訪問權限,就拋出錯誤。殺軟由于啟用了文件保護功能,當MySQL產(chǎn)生臨時文件后,即鎖定文件進行病毒檢測,導致了MySQL自己不能馬上操作這些文件從而拋出錯誤,同樣的,當我試圖查看文件屬性時,操作系統(tǒng)對文件也進行了短時間的鎖定,而這一鎖定導致MySQL自己無法操作,所以也拋出這個錯誤來。
現(xiàn)在這個問題貌似已經(jīng)解決,但是否真的已解決還有待接下來幾天觀察,我的分析是不是正確也有待歷史來作出裁定,呵呵。
另外,我也在網(wǎng)上搜了一把,發(fā)現(xiàn)很多人也遇到這個問題,但多數(shù)人都認為是目錄沒有寫權限而導致,也有部分人知道是殺軟導致的這個問題,卻沒有深入的分析其原因,我就當給有相同遭遇的弟兄拋個磚吧。
關鍵詞:MySQL
閱讀本文后您有什么感想? 已有 人給出評價!
- 0
- 0
- 0
- 0
- 0
- 0