2016-07-28 63 views
1

我有一个相对较大(或至少不是很小)的数据集的客户端。磁盘上约2Gb左右。MySQL表完全(InnoDB) - 错误#1114

当运行这个数据库运行的CRM应用程序的报告功能,我们击中

Database Error Code: The table 'tablexyz' is full, Error 1114 

这是令人费解的,有几个原因。第一是,它管理的决定中约3试图加载报告的页面的秒数。其他人是:

A)这是一个InnoDB表,所以没有明确的行限制为这样 (或我错了)..

B)这是一个x64系统上,使用x64? MySQL的安装,以便 一个InnoDB表的有效大小限制是文件系统的一个4TB的文件大小 .. LIMITE

C)的磁盘未满,它拥有大约700GB 可用。磁盘上的ibdata1文件为1.89Gb,ib日志文件为每个5Mb的 。

的MySQL 我自己从源代码定制编译,因为客户要求的250自定义MAX_INDEXES值就我所知,这将会对这种情况没有影响。

为了解决这个问题,表格甚至不能正常存在......看起来这是在此报告运行期间在运行中创建的临时表。或者至少我认为它确实..在CRM应用程序的整个页面加载过程中,我是否可以在MySQL中找到该表。我不确定是否有更深的问题,我没有看到,它的红色鲱鱼,它告诉我它已满?想法欢迎。

+0

任何想法查询正在运行? –

+0

tmpdir的设置是什么?它指向一个“小”文件系统? –

+0

嗨Rick,我认为tmpdir是在5.7中推出的?除非我在想别的事情。这个系统运行5.5。但是,除此之外,系统本身非常简单,只有一个/ mount,其中包含/ tmp/var等等。在回答你的第一个问题时,实际上不是,我不知道SQL是什么,因为它非常深刻嵌入到非常复杂的预构建CMS中。这很烦人。我很想说这是CMS的一个错误,但我宁愿先解决系统上的所有可能性。 –

回答

0

似乎已达到innodb_data_file_path的最大大小。

这可以帮助:ERROR 1114 (HY000): The table is full

+0

嗨,谢谢你。我在my.cnf中打印了“innodb_data_file_path = ibdata1:10M:autoextend”,但这没有帮助。我还尝试了其他一些建议,但没有取得任何积极的成果。如“tmp_table_size = 512M”和“max_heap_table_size = 512M”。 –

+1

这些512M设置是危险的。它们控制复杂选择中临时表的最大_内存_大小。它不仅仅是“每个连接”,还包括“每个tmp表”。所以,这些值很容易导致你用完RAM。 –

+0

@RickJames,谢谢你,仔细看后,你是对的。无论如何,我已经扭转了这些变化,因为他们没有解决原来的问题,我宁愿不再引入更多的麻烦。谢谢。 –