21 题: ERROR 1114(HY000):桌子已满

在...创建的问题 Wed, Apr 8, 2009 12:00 AM

我正在尝试使用简单查询向InnoDB表添加一行:

 
INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills');

但是当我尝试这个查询时,我得到以下内容:

 
ERROR 1114 (HY000): The table `zip_codes` is full

执行“SELECT COUNT(*)FROM zip_codes”给了我188,959行,考虑到我在同一个数据库中有另一个810,635行的表,这似乎不太多。

我对InnoDB引擎缺乏经验,从未在MyISAM上遇到过这个问题。这里有哪些潜在的问题?

编辑:仅在向zip_codes表添加行时才会出现这种情况。

    
92
  1. 当您尝试插入任何表或只有zip_codes时,是否会发生错误?
    2009-04-08 15:44:24Z
  2. 醇>
    21答案                              21 跨度>                         

    编辑:在解决与配置相关的解决方案之前,如果没有耗尽磁盘空间,请先进行检查。

    innodb_data_file_pathmy.cnf的最大尺寸似乎太小了,在这个例子中

     
    innodb_data_file_path = ibdata1:10M:autoextend:max:512M
    

    在所有innodb表中,你不能容纳超过512MB的数据。

    也许你应该使用innodb_file_per_table切换到每桌的innodb。

        
    81
    2017-09-14 14:36:17Z
    1. C我们在ubuntu中获取此my.cnf文件
      2017-06-16 07:42:58Z
    2. @ Nadh在Ubuntu 16.04中它是/etc/mysql/的一部分,部分分为/etc/mysql/conf.d中的其他文件
      2017-06-17 22:01:00Z
    3. innodb_data_file_path行添加到/etc/mysql/mysql.conf.d/mysqld.cnf并重新启动mysqlapache2服务后,我的工作正常工作
      2018-09-26 01:16:11Z
    4. 醇>

    另一个可能的原因是分区已满 - 这就是我现在发生的事情。

        
    76
    2011-05-28 15:24:25Z
    1. 这应该是第一个要检查的东西。总是回到电源线,我偶然发现了这么多次。
      2017-03-09 15:08:10Z
    2. 你节省了我几个小时试图改变mysql配置。主分区已满。不得不将mysql数据库移动到数据分区,然后创建一个软链接
      2017-09-02 11:21:44Z
    3. 醇>

    你也会得到同样的错误ERROR 1114(HY000):表'#sql-310a_8867d7f'已经满了

    如果您尝试将索引添加到使用存储引擎MEMORY的表。

        
    24
    2010-05-19 17:42:24Z

    您需要修改my.cnf中为INNO_DB表设置的限额上限。没有为各个表设置此内存限制,它是为所有组合表设置的。

    如果您希望内存自动扩展到512MB

    innodb_data_file_path = ibdata1:10M:autoextend:max:512M
    

    如果您不知道限制或不想设置限额上限,可以像这样修改

     
    innodb_data_file_path = ibdata1:10M:autoextend
    
        
    17
    2016-08-10 08:28:16Z
    1. 我们在亚马逊上托管了我们的ddbb,它配置了autoextend。但我们遇到了同样的问题,我认为是由于达到了配置的存储限制
      2016-11-04 09:03:31Z
    2. 醇>

    如果tmpdir所在的分区填满(由于alter table或其他

    ),也会出现此错误     
    11
    2011-11-01 17:15:16Z

    就我而言,这是因为托管ibdata1文件的分区已满。

        
    9
    2010-04-28 16:57:17Z

    存储mysql表的分区(通常是/var /lib /mysql)或存储临时表的地方(通常是/tmp)可能会耗尽空间。

    您可能希望: - 在索引创建期间监控您的可用空间。 - 将tmpdir MySQL变量指向其他位置。这需要重新启动服务器。

        
    9
    2012-06-21 16:58:31Z

    如果您使用NDBCLUSTER作为存储引擎,则应增加DataMemoryIndexMemory

    Mysql FQA

        
    7
    2013-08-22 10:04:43Z

    导入8GB sql数据库文件时,我也遇到了这个错误。检查了我的mysql安装驱动器。 驱动器中没有剩余空间。因此通过删除不需要的项目并重新运行数据库导入命令来获得一些空间。 这次成功了。

        
    6
    2018-09-13 12:25:09Z

    除非您启用innodb_file_per_table选项,否则InnoDB会将所有数据保存在一个文件中,通常称为ibdata1

    检查该文件的大小,并检查它所在的驱动器中是否有足够的磁盘空间。

        
    5
    2009-04-08 15:48:03Z

    我们有:SQLSTATE [HY000]:常规错误:1114表'catalog_product_index_price_bundle_sel_tmp'已满

    解决方法:

    编辑db的配置:

    nano /etc/my.cnf

    tmp_table_size的= 256M max_heap_table_size = 256M

    • restart db
    3
    2015-01-07 23:00:40Z
    1. 这些512M设置很危险。它们控制复杂选择中临时表的最大内存大小。它不仅仅是“每个连接”,而且还“每个tmp表”。所以,这些价值观很容易导致你用完RAM。
      2016-07-29 22:29:39Z
    2. 醇>

    引用MySQL文档。

      

    InnoDB存储引擎将InnoDB表维护在可以从多个文件创建的表空间中。这允许表超过单个文件的最大大小。表空间可以包括原始磁盘分区,它允许非常大的表。最大表空间大小为64TB。

         

    如果您正在使用InnoDB表并且在InnoDB表空间中没有空间。在这种情况下,解决方案是扩展InnoDB表空间。请参见第13.2.5节“[添加,删除或调整InnoDB数据和日志文件的大小”。]

        
    2
    2016-08-10 08:29:57Z

    在我的情况下,它只是因为mysql服务器与一个应用程序一起运行,该应用程序写了太多日志,磁盘已满。

    您可以检查磁盘是否有足够的空间使用

     
    df -h
    

    如果磁盘使用百分比为100%,则可以使用此命令查找哪个目录太大

     
    du -h -d 1 /
    
        
    2
    2019-01-11 09:44:47Z

    在我的情况下,服务器内存已满,因此DB无法写入临时数据。 要解决它,你只需要在你的驱动器上占有一席之地。

        
    1
    2016-01-05 18:59:23Z

    由于磁盘空间不足,我遇到了同样的问题。托管ibdata1文件的分区是InnoDB基础设施的系统表空间已经满了。

        
    1
    2016-12-07 20:00:09Z

    我遇到了这个问题...在我的情况下,我的专用服务器上的存储空间不足。检查是否所有其他方法都失败并考虑增加磁盘空间或删除不需要的数据或文件。

        
    1
    2017-07-25 13:32:05Z

    DOCKER用户:当您达到 Docker镜像大小限制的90%左右时,也会发生这种情况(缓存等似乎需要10%)。措辞令人困惑,因为这仅仅意味着Docker可以用于基本上所有内容的磁盘空间量。

    要修复,请转到Docker桌面设置>磁盘>将滑块向右移动一点>应用

        
    1
    2019-06-09 23:17:13Z

    在CentOS 7上,只需停止并启动MySQL服务就可以解决这个问题。

    sudo service mysql stop

    sudo service mysql start

        
    0
    2016-01-26 13:11:58Z

    我通过增加可用于虚拟机VM的内存量来修复此问题找到了abase。

        
    0
    2018-11-28 15:12:09Z

    就我而言,我试图运行alter table命令,可用磁盘空间小于表的大小。有一次,我增加了磁盘空间,问题就消失了。

        
    0
    2018-12-30 04:32:10Z

    这也可能是InnoDB对开放交易数量的限制:

    http://bugs.mysql.com/bug.php?id=26590

      

    在1024个交易中,有撤消   记录(如编辑任何数据),   InnoDB无法正常工作

        
    - 1
    2010-01-29 13:42:59Z
    1. 答案是过时的。
      2018-07-13 14:59:47Z
    2. 醇>
来源放置 这里