仔細查了一下文件才發現是硬碟空間不足。但是太神奇了!因為那台硬碟空間很大,查詢一下 /tmp 空間有 2G ,應該綽綽有餘才對。
把他的 SQL 語法抓出來實際執行,還真的會錯誤!再執行一次,一邊觀察 /tmp 空間的變化... 驚人的事情是... mysql 在 join 等資料交換時,會把資料放在 /tmp 作處理,如果同時有多人一起做的時候,資料真的會衝破 2G!真是暈倒了!
最後處理方式就是,在 /etc/my.cnf 中設定,把 tmpdir 改成另一個大一點的空間。
# my.cnf
tmpdir = /mysql_tmp
真是,不經一事,不長一智啊!
別問我為何只切 2G 給 /tmp,那是跟國外租的 dedicated server,設定就是那樣,除非要他重灌,但是得付費!所以還是自己解決囉!
BTW,有人知道如何直接加大 /tmp 大小嗎?(現在是切一個 partition,別跟我說用 Partition Magic 之類的,機器遠在美國,我只能用 ssh 進去而已)