mysql error :1114 - The table ‘XXX‘ is full

背景

因爲本地測試庫的一張表數據不需要了,想要使用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即可。
操作步驟如下:

  1. 先查看現配置的tmp_table_size和max_heap_table_size的參數值。
root@db 10:22:  [shop]> show variables like '%table_size%';

在這裏插入圖片描述

  1. 修改my.cnf 配置文件中tmp_table_size和max_heap_table_size這兩個參數。
[root@dxm22 ~]# vim /etc/my.cnf

在這裏插入圖片描述

  1. 重啓 mysql服務。
[root@dxm22 ~]# systemctl restart mysql.service

執行完重啓命令之後,再來查看一下服務狀態:

[root@dxm22 ~]# systemctl status mysql.service

在這裏插入圖片描述
Active: active (running)說明服務重啓成功

  1. 再次查看tmp_table_size和max_heap_table_size這兩個參數值,驗證配置是否生效。
root@db 10:31:  [shop]> show variables like '%table_size%';

在這裏插入圖片描述
看到tmp_table_size值已經更新,說明配置生效了。

  1. 再執行truncate操作。
    再執行TRUNCATE shop.user;即可成功。在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章