简体   繁体   English

MySQL Innodb“表已满”错误

[英]MySQL innodb “The Table is Full” error

i will really appreciate if someone help me with this. 如果有人帮助我,我将非常感激。 I have spend like 8hours googling around and found no solution to problem. 我花了大约8个小时来回搜寻,却找不到解决问题的方法。

I have MySQL server version 5.7.7 on Windows server 2008 R2 我在Windows Server 2008 R2上拥有MySQL服务器版本5.7.7

Table engine is innodb 表引擎是innodb

innodb_file_per_table = 1 innodb_file_per_table = 1

I get error "Table is full" when table reaches 4Gb. 当表达到4Gb时出现错误“表已满”。 MySQL documentation sais that there is actualy only one limit on table size, filesystem. MySQL文档说,实际上表大小,文件系统只有一个限制。 ( http://dev.mysql.com/doc/refman/5.7/en/table-size-limit.html ) http://dev.mysql.com/doc/refman/5.7/en/table-size-limit.html

HDD where are data stored uses NTFS, just to be sure i created 5Gb file without problems. 存储数据的HDD使用NTFS,只是要确保我创建了5Gb文件而没有问题。 And sure there is more than 10Gb of free space. 并确保有超过10Gb的可用空间。

I understand setting "innodb_data_file_path" is irrelevant if "innodb_file_per_table" is enabled, but i tried to set it. 我了解如果启用了“ innodb_file_per_table”,则设置“ innodb_data_file_path”无关紧要,但是我尝试进行设置。 No differences. 没有区别 I have tried to do clean install of mysql. 我试图干净安装mysql。 Same result. 结果相同。

EDIT 编辑

Guy that installed MySQL server before me accidentally installed 32bit version. 在我之前安装MySQL服务器的家伙不小心安装了32位版本。 Migration to 64bit mysql solved that problem 迁移到64位mysql解决了该问题

About the only way for 4GB to be a file limit is if you have a 32-bit version of MySQL. 关于4GB成为文件限制的唯一方法是使用32位版本的MySQL。 Also check for 32-bit Operating system. 同时检查32位操作系统。 (Moved from comment, where it was verified.) (从评论中移出,已在此进行验证。)

i am also not sure but read this it may help you. 我也不确定,但是读这篇文章可能对您有帮助。 http://jeremy.zawodny.com/blog/archives/000796.html http://jeremy.zawodny.com/blog/archives/000796.html

one more thing one guy had same problem.he had made changes to 
NNODB settings for the innodb_log_file_size and innodb_log_buffer_size!changes were :

1) shutdown mysql
2) cd /var/lib/mysql 
3) mkdir oldIblog
4) mv ib_logfile* oldIblog
5) edit /etc/my.cnf find the line innodb_log_file_size= and increase it to an appropriate value (he went to 1000MB as he was dealing with a very large dataset... 250million rows in one table). If you are not sure I suggest doubling the number every time you get a table is full error. he set innodb_log_buffer_size to 1/4 of the size of his log file and the problems went away.

I didnt find solution to this, i have no idea why mysql is unable to create more than 4Gb table. 我没有找到解决方案,我不知道为什么mysql无法创建超过4Gb的表。

As a workaround i moved only this table back to ibdata by setting "innodb_file_per_table" back to 0 and recreated that table. 作为解决方法,我通过将“ innodb_file_per_table”设置回0来仅将此表移回ibdata并重新创建该表。 Interesting is that even ibdata1 reported table is full when it reached 4Gb, even without setting max and enabled autoexpand. 有趣的是,即使未设置最大值并启用自动扩展,即使ibdata1报告的表达到4Gb时也已满。

So i created ibdata2 and let it autoexpand, now i am able to write new data to that table. 所以我创建了ibdata2并使其自动扩展,现在我可以将新数据写入该表了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM