ERROR 1 (HY000): Can't create/write to file '/tmp/sqlxxxx.ism' (Errcode: 28)
Errcode 28 = No space left on device (磁碟滿)。
/tmp 往往掛載在小根分區。[mysqld]
tmpdir = /data/mysql_tmp
mysql 用戶可讀寫執行 (rwx)。ls -ld /tmp 檢查擁有者/權限。chown mysql:mysql /data/mysql_tmp && chmod 1777 /data/mysql_tmp (sticky bit 防誤刪)。audit.log 或暫時設為 Permissive 驗證。df -h /tmp
df -h /var/lib/mysql
# 釋放空間:清理舊備份、壓縮日誌、刪除臨時表殘留 #sql* 檔案
shell> perror 28
OS error code 28: No space left on device
ORDER BY/GROUP BY 不走索引需臨時表排序。UNION、DISTINCT、JOIN (衍生表)。EXPLAIN 出現 Using temporary 即會寫 tmpdir。tmpdir 掛載獨立大容量 SSD/NVMe,掛載選項 noatime,nodev,nosuid。Created_tmp_disk_tables 狀態變數,持續增長表示查詢優化空間大。tmp_table_size/max_heap_table_size 讓記憶體臨時表承載更多。