mysql the table is full

【0】最终要的还是查看错误日志定位问题啊

【1】InnoDB :: 

【1.1】cannot find a free slot for an undo log

最近数据库数据量及访问频率比较大的两个表出现了the table xxx is full的问题,导致无法写入数据。

查看mysql log发现错误:

InnoDB :: cannot find a free slot for an undo log

 

原因分析:由于innodb的任何操作都隱含有一個transaction,而出现问题的表由于数据量大操作频繁导致同時有太多事務,以致出现这样的错误。
解决办法:增大配置文件里的参数innodb_log_file_size到1G 。

【1.2】write to file  ./ibdata failed at offset  310 3214654123

  

 

  由上图可知,有2种可能。

  (1)ibdata已经达到设置上限

  (2)ibdata已经达到OS的文件系统的 大小上限,无法再申请空间扩展。

 

 

【2】the table is full

有时候项目好好的就报:数据库操作错误,请联系管理员,发现后台报这个

来说说解决mysql出现"the table is full"的问题:

 

mysql出现"the table is full"的问题,一般有两个原因:

【2.1】MEMORY (HEAP) storage engine

You are using the MEMORY (HEAP) storage engine; in this case you need to increase the value of the max_heap_table_size system variable. See Section 5.1.3, “Server System Variables”.

ERROR 1114 (HY000) at line 1720: The table 'XXXX' is full

于是就修改Mysql的配置文件my.ini,在[mysqld]下添加/修改两行:
tmp_table_size = 256M
max_heap_table_size = 256M

系统默认是16M,修改完后重启mysql

 

【2.2】硬盘空间满了,清理硬盘即可

不要被mysql的安装目录所欺骗, 最好亲自去看看数据存放目录是哪

在my.ini  搜索 datadir

看其指向的目录 就是数据存放目录

 使用df -h 查看

 

我当时的解决方案是,将数据库的磁盘清理了就好了;

我觉得还可以创建临时表,设置表的size

posted @ 2020-03-24 10:36  郭大侠1  阅读(5172)  评论(0编辑  收藏  举报