我的客户端有一个相对较大(或至少不是很小)的数据集。磁盘上约2Gb左右。
运行使用此DB运行的CRM应用程序的报告功能时,我们会遇到
Database Error Code: The table 'tablexyz' is full, Error 1114
令人费解的原因有几个。首先,它设法决定在页面尝试加载报告的大约3秒内。其他是:
A)它是InnoDB表,因此没有明确的行限制 (或者我错了?)..
B)它是一个x64系统,安装了x64 MySQL InnoDB表的有效大小限制是文件系统的单一限制 filesize 4Tb限制..
C)磁盘未满,大约有700Gb 可用。磁盘上的ibdata1文件是1.89Gb,ib日志文件是 每个5Mb。
MySQL 自己从源自定义编译,因为客户端请求自定义MAX_INDEXES值为250.据我所知,这对此方案没有影响。
为了使问题更加复杂,表格甚至不会正常存在...它似乎是在此报告运行期间动态创建的临时表格。或者至少我认为它确实..在CRM应用程序的整个页面加载过程中,我可以在MySQL中找到该表。我不确定是否有一个我没有看到的更深层次的问题,它是一个红色的鲱鱼,它告诉我它已经满了?欢迎提示。
答案 0 :(得分:0)
似乎已达到innodb_data_file_path的最大大小。
答案 1 :(得分:0)
我一直在与这个问题作斗争。大量内存和可用磁盘空间。
最终为我解决问题的是增加 temptable_max_ram
。这与增加 tmp_table_size
和 max_heap_table_size
相结合似乎已停止将临时表推送到磁盘,从而以某种方式达到其最大大小。
当然应该考虑 Rick James 提出的问题。