報錯Can't create/write to file 'C:/WINDOWS/TEMP/#sql_5c0_0.MYD' (Errcode: 17),本質是臨時文件創建失敗。常見於大查詢、排序、臨時表操作。本文提供四層遞進解決方案:權限、磁碟空間、殺毒軟件干擾、MySQL配置變更。
#sql_*.MYD/.MYI文件執行排序/分組/臨時表C:\WINDOWS\TEMP、Linux/tmpEEXIST(文件已存在)或權限/空間不足del /q C:\WINDOWS\TEMP\*),確保磁碟剩餘>20%#sql_*.MYD/.MYI文件McAfee「訪問掃描」在文件寫入時掃描,導致MySQL創建臨時文件超時/失敗。
D:\mysql\temp\(讀取時/寫入時均排除)[mysqld]
tmpdir = "D:/mysql/temp/"
D:\mysql\temp\,授予MySQL服務賬號完全控制權限my.ini,[mysqld]段添加上述行優勢:隔離業務臨時文件與系統臨時文件,避開殺毒掃描熱點,便於磁碟配額管理。
Local System(系統權限),通常足夠# 修改 my.cnf
[mysqld]
tmpdir = /data/mysql/tmp
# 創建目錄並授權
mkdir -p /data/mysql/tmp
chown mysql:mysql /data/mysql/tmp
chmod 750 /data/mysql/tmp
# systemd 服務若啟用 PrivateTmp=true,需關閉或掛載共享 tmp
# 編輯 /usr/lib/systemd/system/mysqld.service
# PrivateTmp=false
systemctl daemon-reload && systemctl restart mysqld
SHOW VARIABLES LIKE 'tmpdir';
-- 執行大查詢觀察 tmpdir 下是否生成 #sql_* 文件
遵循「環境檢查→殺毒排除→隔離目錄→權限保障」四步走,徹底根治MySQL臨時文件創建失敗。