【解决问题】Caused by: java.sql.SQLException: The table ‘XXX’ is full(mysql the table is full)

问题描述

Caused by: java.sql.SQLException: The table ‘XXX’ is full(mysql the table is full)

解决方案

导致错误的可能因素:

1、磁盘满了;
2、表数据太多了

排查问题步骤:

1、表数据过多

1.1 查询表

单表数据过大将会导致异常
大概七八位数左右数据就可能打满,比如有些AOP记录、日志记录等数据过多。。
此种情况需要清理表数据即可。。

use information_schema;
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='数据库名称' and table_name='表名称';

2、磁盘满

2.1 查看磁盘占用情况

使用如下命令

df -h

2.2 查看哪个文件占用多

使用如下命令

du -sh *

2.3 可能因素binlog

其实大多数情况是因为binlog,清除掉里面的mysql-bin.0004**之前的binlog纪录。

如果数据操作频繁会产生大量的日志,在/usr/local/mysql/var/下产生mysql-bin.0000* 类似的文件,一般都在几十MB到几个GB,更甚会占满整个硬盘空间,从而导致mysql无法启动或报错。。

rm -rf mysql-bin.00040*;

在服务器上直接删除binlog日志(物理删除),会造成MySQL无法启动。
这是因为binlog文件是通过读取binlog.index文件加载的,需要进入该文件把对应的binlog记录删除或注释掉就可以了

vim mysql-bin.log.index

如果不需要binlog的话可以关闭

全局找一下my.cnf文件

find /* -name my.cnf

修改my.cnf文件,使用#注释掉如下两行:

#log-bin=mysql-bin
#binlog_format=mixed

然后再重启即可

/etc/init.d/mysql restart

猜你喜欢

转载自blog.csdn.net/weixin_44436677/article/details/130073082