在虛擬機環境中建立觸發器成功,但執行 SHOW TRIGGERS 時拋出錯誤:
ERROR 1030 (HY000): Got error 28 from storage engine
進一步查看錯誤詳情:
mysql> SHOW ERRORS;
+-------+------+--------------------------------------------------------+
| Level | Code | Message |
+-------+------+--------------------------------------------------------+
| Error | 1030 | Got error 28 from storage engine |
| Error | 6 | Error on delete of '/tmp/#sql_1515_0.MYI' (Errcode: 2) |
+-------+------+--------------------------------------------------------+
No such device or address,指向 /tmp/#sql_1515_0.MYI 臨時文件操作失敗df -h 發現系統盤 /dev/sda1 使用率 100%(4.9G 已滿),而 MySQL 資料目錄掛載在 /dev/sdb1(僅 30% 使用率)[root@ytt david.yang]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 4.9G 4.9G 0 100% /
tmpfs 252M 0 252M 0% /dev/shm
/dev/sdb1 9.9G 2.8G 6.6G 30% /opt/sdb
清理系統盤 / 下的無用文件(如舊日誌、臨時文件、快取),釋放空間:
[root@ytt david.yang]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 4.9G 3.5G 1.1G 77% /
tmpfs 252M 0 252M 0% /dev/shm
/dev/sdb1 9.9G 2.8G 6.6G 30% /opt/sdb
空間釋放後,SHOW TRIGGERS 即恢復正常。
perror 與 df 診斷/tmp 掛載到獨立分區並設定配額監控SHOW TRIGGERS 等元資料查詢會建立臨時 MyISAM 表於 tmpdir,空間不足直接導致存儲引擎報錯tmpdir 所在分區使用率tmpdir 指向大容量分區:tmpdir = /opt/sdb/tmp