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
1114 (HY000): The table is full
提问by Wickethewok
I'm trying to add a row to an InnoDB
table 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_codes
is 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 engine
and never experienced this issue with MyISAM
. What are some of the potential problems here ?
我InnoDB engine
对MyISAM
. 这里有哪些潜在问题?
EDIT: This only occurs when adding a row to the zip_codes
table.
编辑:这仅在向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_path
in 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 tmpdir
resides 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 DataMemory
and IndexMemory
.
如果你使用 NDBCLUSTER 作为存储引擎,你应该增加DataMemory
和IndexMemory
。
回答by Quassnoi
Unless you enabled innodb_file_per_table
option, InnoDB
keeps 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.
检查该文件的大小并检查它所在的驱动器中有足够的磁盘空间。