我正在通过MySQL使用sphinxse访问一个大型的索引文本数据集。结果集的大小约为千兆字节。但是,我注意到每当dataset大于16MB时,MySQL就会停止查询,并显示以下错误:
1430 (HY000):处理外部数据源上的查询时出现问题。数据源错误:错误的搜索响应长度(length=16777523)
length显示违反MySQL的结果集的长度。我已经用Sphinx的独立搜索程序尝试了相同的查询。它工作得很好。我已经在MySQL和Sphinx中尝试了所有可能的变量,但都没有用。
我使用的是Sphinx0.9.9RC-2和MySQL 5.1.46。
谢谢
发布于 2010-05-02 09:57:07
我终于解决了这个问题。事实证明,sphinx plugin for mysql (SphinxSE)在源代码(错误的源代码)中硬编码结果集上的16MB响应限制。我在文件ha_sphinx.cc中将SPHINXSE_MAX_ALLOC更改为1*1024*1024*1024,现在一切正常。
发布于 2010-05-01 11:31:06
您可能需要将max_allowed_packet从默认值16M增加:
客户端和服务器都有自己的max_allowed_packet变量,因此如果您想要处理大型数据包,则必须在客户端和服务器中都增加此变量。
如果您使用的是mysql客户端程序,那么它的默认max_allowed_packet变量是16MB。要设置更大的值,请按如下方式启动mysql:
shell> mysql --max_allowed_packet=32M
这会将数据包大小设置为32MB。
https://stackoverflow.com/questions/2747905
复制相似问题