2010-04-30 84 views
1

我正在通過MySQL使用sphinxse訪問大型索引文本數據集。結果集的大小大小爲千兆字節。但是,我注意到,只要數據集大於16MB,MySQL就會停止查詢並出現以下錯誤:MySQL中大於16 MB的Sphinx結果集的問題

1430(HY000):在外部數據源上處理查詢時出現問題。數據源錯誤:錯誤的searchd響應長度(長度= 16777523)

長度顯示冒犯MySQL的結果集的長度。我已經用Sphinx的獨立搜索程序嘗試了相同的查詢。它工作正常。我已經在MySQL和Sphinx中嘗試過所有可能的變量,但沒有任何幫助。

我正在使用Sphinx 0.9.9 RC-2和MySQL 5.1.46。

感謝

回答

0

你可能需要從16M它的默認值增加max_allowed_pa​​cket的:

mysql's documentation

客戶端和服務器都有自己的max_allowed_pa​​cket個變量,所以,如果你想處理大數據包,您必須在客戶端和服務器中增加這個變量。

如果您使用的是mysql客戶端程序,則其默認的max_allowed_pa​​cket變量爲16MB。要設置較大的值,啓動mysql這樣的:

殼>的MySQL --max_allowed_pa​​cket = 32M

即設置數據包大小爲32MB。

+0

感謝您的回覆。我已經在服務器以及客戶端嘗試了max_allowed_pa​​cket。它沒有工作:( – gmemon 2010-05-01 13:33:54

1

我終於解決了這個問題。事實證明,MySQL的Sphinx插件(SphinxSE)在源代碼中對結果集的16 MB響應限制進行了硬編碼(壞的壞的源代碼)。我在文件ha_sphinx.cc中將SPHINXSE_MAX_ALLOC更改爲1 * 1024 * 1024 * 1024,現在一切正常。