錯誤現象
Error: Can't create/write to file 'C:\Windows\TEMP\#sql_718_0.MYD' (Errcode: 17)
五大可能原因與對應解法
| 原因 | 檢查/解決方法 |
| 1. TEMP 目錄權限不足 | 確保 Users 群組對 C:\Windows\Temp 有讀寫權限 |
| 2. 磁碟空間不足 | 清理 Temp 目錄或擴充磁碟 |
| 3. McAfee/防毒軟體攔截寫入 | 將 Temp 目錄加入掃描排除清單 |
| 4. 防毒「寫入時掃描」阻擋 | 關閉「掃描檔案 (寫入磁碟時)」或排除 MySQL 目錄 |
| 5. 殘留暫存檔鎖定 | 手動刪除 #sql_*.MYD/.MYI 檔案 |
根治方案:修改 MySQL 暫存目錄 (推薦)
- 建立專用目錄:
D:\mysqltmp\temp\ (確保權限)
- 編輯
my.ini,在 [mysqld] 區段新增:
tmpdir="D:/mysqltmp/temp/"
- 重啟 MySQL 服務生效
- 若裝有 McAfee:
控制台 → 即時掃描 → 屬性 → 所有進程 → 偵測項 → 排除項 → 新增 D:\mysqltmp\temp,勾選「讀取時/寫入時」
原理說明
- 大型查詢 (排序、分組、臨時表) 需寫入暫存檔
- 預設
tmpdir 指向系統 Temp,易受權限/防毒/空間限制
- 獨立目錄隔離風險,便於權限管理與防毒排除
Linux 環境同理
[mysqld]
tmpdir = /data/mysqltmp # 掛載大磁碟、設定權限 mysql:mysql