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

2020/12/30 10:39
阅读数 109

背景

因为本地测试库的一张表数据不需要了,想要使用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;即可成功。在这里插入图片描述
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部