понедельник, 14 февраля 2011 г.

Ошибка при индексации в Sphinx 0.9.9 + MySQL 5.1.47 под Windows XP

В очередной раз после переустановки системы решил развернуть проект в котором используется MySQL + Sphinx. Все проходило гладко пока не дошел до индексации данных Sphinx-ом.

Отсутствует libmySQL.dll

Запускаем индексацию ("C:\Sphinx>bin\indexer --all") и получаем сообщение

"This application has failed to start because LIBMYSQL.dll was not found. Re-installing the application may fix this problem."

Эта проблема решается быстро, просто копируем файл libmySQL.dll из папки установленного MySQL ("c:\Program Files\MySQL\MySQL Tools for 5.0\libmySQL.dll") в папку System32 ("c:\WINDOWS\system32\").
"Иной" libmySQL.dll

Делаем повторный запуск индексации ("C:\Sphinx>bin\indexer --all") и в этот раз уже получаем другую ошибку:

C:\Sphinx>bin\indexer --all
Sphinx 0.9.9-rc1 (r1566)
Copyright (c) 2001-2008, Andrew Aksyonoff

using config file './sphinx.conf'...
WARNING: key 'port' is deprecated in ./sphinx.conf line 47; use 'listen' instead.
indexing index 'my_index'...
ERROR: index 'my_index': column number 1 has no name.
total 0 docs, 0 bytes
total 0.033 sec, 0.00 bytes/sec, 0.00 docs/sec
total 0 reads, 0.0 sec, 0.0 kb/read avg, 0.0 msec/read avg
total 0 writes, 0.0 sec, 0.0 kb/write avg, 0.0 msec/write avg
 В этот момент у меня "глаза сильно округлились", так как раньше все работало отлично, а за это время проект не менялся. Сообщение "column number 1 has no name." не давало каких-либо зацепок.

Сокровенный ответ был найден на форуме http://www.sphinxsearch.com/forum/view.html?id=2724. Как оказалось, ошибка возникает, если использовать libmySQL.dll из MySQL версии 5.1 и выше.

Скачав libmySQL.dll из версии 5.0.37, сохраняем в папку System32 ("c:\WINDOWS\system32\") и запускаем индексацию. Все отлично работает!

3 комментария: