错误1114(HY000):表已满

我想用一个简单的查询添加一行到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表添加一行时。

编辑:首先检查,如果你没有用完磁盘空间,解决之前的configuration相关的决议。

您的my.cnfinnodb_data_file_path最大大小看起来似乎太低,在本例中

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

在所有innodb表中,您不能托pipe超过512MB的数据。

也许你应该使用innodb_file_per_table切换到innodb-per-tablescheme。

另一个可能的原因是分区已经满了 – 这正是我现在发生的事情。

您也将得到相同的错误错误1114(HY000):表'#sql-310a_8867d7f'已满

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

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

如果你想内存自动扩展到512MB

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

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

 innodb_data_file_path = ibdata1:10M:autoextend 

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

如果tmpdir驻留的分区tmpdir (由于更改表或其他),也会出现此错误

您可能在存储mysql表的分区(通常是/ var / lib / mysql)或临时表的存储位置(通常是/ tmp)中空间不足。

您可能需要: – 在创build索引期间监视您的可用空间。 – 将tmpdir MySQLvariables指向不同的位置。 这需要重新启动服务器。

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

Mysql FQA

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

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

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

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

解决:

编辑数据库的configuration:

nano /etc/my.cnf

tmp_table_size = 256M max_heap_table_size = 256M

  • 重启数据库

引用MySQL文档。

InnoDB存储引擎在可以从多个文件创build的表空间中维护InnoDB表。 这允许一个表超过最大的单个文件大小。 表空间可以包含原始磁盘分区,允许使用非常大的表。 最大的表空间大小是64TB。

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

由于磁盘空间不足,我面临同样的问题。 而承载ibdata1文件(这是InnoDB基础架构的系统表空间)的分区已满。

这也可能是InnoDB对于未完成交易数量的限制:

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

在1024个事务中,有撤销logging(如在编辑任何数据),InnoDB将无法工作

在我的情况下,服务器内存已满,所以数据库无法写入临时数据。 要解决它,你只需要在你的驱动器上做一些地方。

在CentOS 7上,停止并启动MySQL服务为我解决了这个问题。

sudo service mysql stop

sudo service mysql start

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