背景
因為本地測驗庫的一張表資料不需要了,想要使用truncate進行洗掉,執行操作:TRUNCATE shop.user; 時提示:1114 - The table ‘user’ is full, Time: 0.008000s
原因
根據上面提示資訊解釋為:表user已經滿了,其實是因為洗掉操作,磁盤可用空間需要大于表本身占據的空間(比如當前操作的表占據 2 GB,那么要求磁盤可用空間必須大于 2 GB),
我們先來查看一下磁盤空間情況:
[root@dxm22 ~]# df -h

找到了執行truncate失敗的原因是磁盤空間已滿,
解決辦法
解決辦法一:既然確定是磁盤空間已滿,我們來釋放一點空間再試試,
我們先用find / -xdev -size +100M -exec ls -lh {} \; 來查看磁盤空間的占用情況,然后找到不用的檔案進行洗掉,
然后再執行TRUNCATE shop.user; 進行洗掉,我這里是洗掉成功了,如果不能洗掉成功,可以繼續往下看,
解決辦法二:找到my.cnf組態檔,設定 tmp_table_size 大于 max_heap_table_size即可,
操作步驟如下:
- 先查看現配置的tmp_table_size和max_heap_table_size的引數值,
root@db 10:22: [shop]> show variables like '%table_size%';

- 修改my.cnf 組態檔中tmp_table_size和max_heap_table_size這兩個引數,
[root@dxm22 ~]# vim /etc/my.cnf

- 重啟 mysql服務,
[root@dxm22 ~]# systemctl restart mysql.service
執行完重啟命令之后,再來查看一下服務狀態:
[root@dxm22 ~]# systemctl status mysql.service

Active: active (running)說明服務重啟成功,
- 再次查看tmp_table_size和max_heap_table_size這兩個引數值,驗證配置是否生效,
root@db 10:31: [shop]> show variables like '%table_size%';

看到tmp_table_size值已經更新,說明配置生效了,
- 再執行truncate操作,
再執行TRUNCATE shop.user;即可成功,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/241939.html
標籤:其他
上一篇:3D數學中,關于矩陣變換意義
下一篇:nginx的一些優化
