返回顶部
首页 > 资讯 > 数据库 >ERROR 1114 (HY000): The table 'test1' is full 的解决
  • 378
分享到

ERROR 1114 (HY000): The table 'test1' is full 的解决

2024-04-02 19:04:59 378人浏览 八月长安
摘要

今天执行sql碰到 1114的错误,如下: Mysql> insert into test1 select * from test; Query OK, 1778 rows affect

今天执行sql碰到 1114的错误,如下:
Mysql> insert into test1 select * from test;
Query OK, 1778 rows affected (0.06 sec)
Records: 1778  Duplicates: 0  Warnings: 0

mysql> insert into test1 select * from test;
ERROR 1114 (HY000): The table 'test1' is full

查看官方的文档,并没有答案,里面说到操作系统文件的限制引起了这个错误,可以理解,操作系统单个文件大小最大是2G,那么采用innodb_file_per_table=on 时,会把一个表数据创建在一个文件中,那么这个表数据的大小只能是2G了。
Http://dev.mysql.com/doc/refman/5.7/en/full-table.html

问题是我的表没有2G:
mysql> select * from infORMation_schema.tables where table_name='test' \G
*************************** 1. row ***************************
  TABLE_CATALOG: def
   TABLE_SCHEMA: test
     TABLE_NAME: test
     TABLE_TYPE: BASE TABLE
         ENGINE: MEMORY
        VERSION: 10
     ROW_FORMAT: Fixed
     TABLE_ROWS: 1778
 AVG_ROW_LENGTH: 9440
    DATA_LENGTH: 16855944
MAX_DATA_LENGTH: 16765440
   INDEX_LENGTH: 0
      DATA_FREE: 0
 AUTO_INCREMENT: NULL
    CREATE_TIME: 2016-09-19 13:45:37
    UPDATE_TIME: NULL
     CHECK_TIME: NULL
TABLE_COLLATION: utf8_general_ci
       CHECKSUM: NULL
 CREATE_OPTIONS:
  TABLE_COMMENT:
1 row in set (0.00 sec)


大约16M, 另一个有用的信息是这个表的存储引擎是 MEMORY.
这个是由于 create table test like information_schema.tables, create table test1 like test; 而information_schema.tables是tables表是memory存储引擎所致。
 

而 memory 的大小受到 'max_heap_table_size' 参数影响
mysql> show variables like 'max_heap_table_size';
+---------------------+----------+
| Variable_name       | Value    |
+---------------------+----------+
| max_heap_table_size | 16777216 |
+---------------------+----------+

修改此参数大小验证一下:
set max_heap_table_size=167772160
还是报错。


根据网上的资料,修改my.cnf文件,然后重新启动:
tmp_table_size = 256M
max_heap_table_size = 256M

再次执行就可以了
mysql> insert into test2 select * from test2;
Query OK, 9216 rows affected (1.22 sec)
Records: 9216  Duplicates: 0  Warnings: 0

此时表的最大长度也变为 256M了。
mysql> select * from information_schema.tables where table_name='test2' \G
*************************** 1. row ***************************
  TABLE_CATALOG: def
   TABLE_SCHEMA: test
     TABLE_NAME: test2
     TABLE_TYPE: BASE TABLE
         ENGINE: MEMORY
        VERSION: 10
     ROW_FORMAT: Fixed
     TABLE_ROWS: 18432
 AVG_ROW_LENGTH: 9440
    DATA_LENGTH: 174807384
MAX_DATA_LENGTH: 268313120
   INDEX_LENGTH: 0
      DATA_FREE: 0
 AUTO_INCREMENT: NULL
    CREATE_TIME: 2016-09-19 14:37:29
    UPDATE_TIME: NULL
     CHECK_TIME: NULL
TABLE_COLLATION: utf8_general_ci
       CHECKSUM: NULL
 CREATE_OPTIONS:
  TABLE_COMMENT:



您可能感兴趣的文档:

--结束END--

本文标题: ERROR 1114 (HY000): The table 'test1' is full 的解决

本文链接: https://lsjlt.com/news/46894.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作