Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 1114(HY000):桌子已经满了_Mysql_Innodb - Fatal编程技术网

Mysql 1114(HY000):桌子已经满了

Mysql 1114(HY000):桌子已经满了,mysql,innodb,Mysql,Innodb,我试图通过一个简单的查询将一行添加到InnoDB表中: INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills'); 但当我尝试此查询时,我得到以下结果: 错误1114(HY000):表zip\u code已满 做一个 SELECT COUNT(*) FROM zip_codes 给我188959行,考虑到同一数据库中有另一个包含810635行的表,这似乎不太多 我对InnoDB引擎相当缺乏经验,也从未在M

我试图通过一个简单的查询将一行添加到
InnoDB
表中:

INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills');
但当我尝试此查询时,我得到以下结果:

错误1114(HY000):表
zip\u code
已满

做一个

SELECT COUNT(*) FROM zip_codes
给我188959行,考虑到同一数据库中有另一个包含810635行的表,这似乎不太多

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


编辑:这仅在向
邮政编码表添加行时发生。

引用MySQL文档

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

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


编辑:在解析为与配置相关的解析之前,如果磁盘空间没有用完,请首先检查

在本例中,您的
my.cnf
中的
innodb\u data\u文件路径的最大大小似乎太小

innodb_data_file_path = ibdata1:10M:autoextend:max:512M
所有innodb表中的数据总和不能超过512MB


也许您应该使用
innodb\u file\u per\u table
切换到innodb per table方案,除非启用
innodb\u file\u per\u table
选项,
innodb
将所有数据保存在一个文件中,通常称为
ibdata1


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

这也可能是InnoDB对打开事务数的限制:

在1024个事务中,已撤消 记录(如中所述,编辑任何数据), InnoDB将无法工作


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

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

innodb_data_file_path = ibdata1:10M:autoextend:max:512M
如果您不知道限制或不想设置限制上限,可以这样修改它

innodb_data_file_path = ibdata1:10M:autoextend

在我的例子中,这是因为承载ibdata1文件的分区已满。

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


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

另一个可能的原因是分区已满-这正是我现在遇到的情况。

如果
tmpdir
所在的分区已满,也会出现此错误(由于alter table或其他

的原因,如果使用NDBCLUSTER作为存储引擎,则应增加
数据内存
索引内存


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


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

我们有:SQLSTATE[HY000]:一般错误:1114表“catalog\u product\u index\u price\u bundle\u sel\u tmp”已满

解决者:

编辑数据库的配置:

nano/etc/my.cnf

tmp_表_尺寸=256M 最大堆表尺寸=256M

  • 重新启动数据库

在我的情况下,服务器内存已满,因此数据库无法写入临时数据。
要解决这个问题,你只需要在你的硬盘上腾出一些地方。

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

sudo服务mysql停止


sudo service mysql start

导入8GB sql数据库文件时,我也遇到了这个错误。检查了我的mysql安装驱动器。驱动器中没有剩余空间。因此,通过删除不需要的项目获得了一些空间,并重新运行了数据库导入命令。这次成功。我遇到了一些问题同样的问题是因为磁盘空间不足。托管IDBDA1文件的分区是IDANDB基础结构的系统表空间。

< P>我遇到了这个问题……在我的情况下,我的专用服务器上的内存用完了。数据或文件。

我通过增加数据库所在的虚拟机的可用内存量解决了这个问题。

在我的情况下,我试图运行alter table命令,可用磁盘空间小于表的大小。一旦我增加了磁盘空间,问题就消失了。

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

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

df -h
如果磁盘使用率为100%,则可以使用此命令查找哪个目录太大

du -h -d 1 /

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

要修复此问题,请转到Docker桌面设置>磁盘>向右移动滑块>应用


对于那些在尝试增加各种内存限制时仍然存在问题的人来说,这个磁盘在/var/www/mysql上已经满了:通过设置
internal\u tmp\u mem\u storage\u engine=memory
为我解决了这个问题


我使用的是Ubuntu 20.04.2,使用的是MySQL 8.0.25-0ubuntu0.20.04.1。

在尝试插入时是否会出现错误