MySQL 1114 (HY000):表已满

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/730579/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 13:04:13  来源:igfitidea点击:

1114 (HY000): The table is full

mysqlinnodb

提问by Wickethewok

I'm trying to add a row to an InnoDBtable with a simply query:

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

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

But when I attempt this query, I get the following:

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

ERROR 1114 (HY000): The table zip_codesis full

ERROR 1114 (HY000): 表zip_codes已满

Doing a

做一个

SELECT COUNT(*) FROM zip_codes

gives me 188,959 rows, which doesn't seem like too many considering I have another table with 810,635 rows in that same database.

给了我 188,959 行,考虑到我在同一个数据库中有另一个包含 810,635 行的表,这似乎并不算多。

I am fairly inexperienced with the InnoDB engineand never experienced this issue with MyISAM. What are some of the potential problems here ?

InnoDB engineMyISAM. 这里有哪些潜在问题?

EDIT: This only occurs when adding a row to the zip_codestable.

编辑:这仅在向zip_codes表中添加行时发生。

采纳答案by Martin C.

EDIT:First check, if you did not run out of disk-space, before resolving to the configuration-related resolution.

编辑:首先检查,如果您没有用完磁盘空间,然后再解析到与配置相关的分辨率。

You seem to have a too low maximum size for your innodb_data_file_pathin your my.cnf, In this example

你似乎有过低的最大尺寸为你innodb_data_file_path在你的my.cnf,在这个例子中

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

you cannot host more than 512MB of data in all innodb tables combined.

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

Maybe you should switch to an innodb-per-table scheme using innodb_file_per_table.

也许您应该使用innodb_file_per_table.

回答by maaartinus

Another possible reason is the partition being full - this is just what happened to me now.

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

回答by Green Card

You will also get the same error ERROR 1114 (HY000): The table '#sql-310a_8867d7f' is full

您还将收到相同的错误 ERROR 1114 (HY000): The table '#sql-310a_8867d7f' is full

if you try to add an index to a table that is using the storage engine MEMORY.

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

回答by Daniel Luca CleanUnicorn

You need to modify the limit cap set in my.cnf for the INNO_DB tables. This memory limit is not set for individual tables, it is set for all the tables combined.

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

If you want the memory to autoextend to 512MB

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

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

If you don't know the limit or don't want to put a limit cap, you can modify it like this

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

innodb_data_file_path = ibdata1:10M:autoextend

回答by fimbulvetr

This error also appears if the partition on which tmpdirresides fills up (due to an alter table or other

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

回答by skiphoppy

In my case, this was because the partition hosting the ibdata1 file was full.

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

回答by Julio

You may be running out of space either in the partition where the mysql tables are stored (usually /var/lib/mysql) or in where the temporary tables are stored (usually /tmp).

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

You may want to: - monitor your free space during the index creation. - point the tmpdir MySQL variable to a different location. This requires a server restart.

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

回答by Arun Kumar

I too faced this error while importing an 8GB sql database file. Checked my mysql installation drive. There was no space left in the drive.So got some space by removing unwanted items and re-ran my database import command. This time it was successful.

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

回答by metdos

If you use NDBCLUSTER as storage engine, you should increase DataMemoryand IndexMemory.

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

Mysql FQA

mysql 常见问题解答

回答by Quassnoi

Unless you enabled innodb_file_per_tableoption, InnoDBkeeps all data in one file, usually called ibdata1.

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

Check the size of that file and check you have enough disk space in the drive it resides on.

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