Мышление sphinx неизвестный тип 'mysql'; пропуская
Я использую ts версии 2.0.5, rails 3.0.9 и mysql2 0.2.11
При попытке создать мои индексы, используя rake ts: index, я получаю следующую ошибку:
ERROR: source 'technical_core_0': unknown type 'mysql'; skipping.
My development.sphinx.conf содержит:
source technical_core_0
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass =
sql_db = ps_development
sql_sock = /tmp/mysql.sock
sql_query_pre = SET NAMES utf8
sql_query_pre = SET TIME_ZONE = '+0:00'
sql_query = SELECT SQL_NO_CACHE `technicals`.`id` * CAST(1 AS SIGNED) + 0 AS `id` , `orders`.`name` AS `author`, `technicals`.`id` AS `sphinx_internal_id`, 0 AS `sphinx_deleted`, 488243725 AS `class_crc`, IFNULL(`orders`.`name`, '') AS `author_sort`, `technicals`.`order_id` AS `order_id`, UNIX_TIMESTAMP(`technicals`.`created_at`) AS `created_at`, UNIX_TIMESTAMP(`technicals`.`updated_at`) AS `updated_at` FROM `technicals` LEFT OUTER JOIN `orders` ON `orders`.`id` = `technicals`.`order_id` WHERE (`technicals`.`id` >= $start AND `technicals`.`id` <= $end) GROUP BY `technicals`.`id`, , `orders`.`name`, `technicals`.`id`, `orders`.`name`, `technicals`.`order_id`, `technicals`.`created_at`, `technicals`.`updated_at` ORDER BY NULL
sql_query_range = SELECT IFNULL(MIN(`id`), 1), IFNULL(MAX(`id`), 1) FROM `technicals`
sql_attr_uint = sphinx_internal_id
sql_attr_uint = sphinx_deleted
sql_attr_uint = class_crc
sql_attr_uint = order_id
sql_attr_timestamp = created_at
sql_attr_timestamp = updated_at
sql_attr_str2ordinal = author_sort
sql_query_info = SELECT * FROM `technicals` WHERE `id` = (($id - 0) / 1)
}
Что немного странно, так как файл database.yml содержит mysql2 и пароль root.
Можете ли вы помочь мне пройти этот этап? Я также попытался создать файл sphinx.yml с помощью
development:
adapter: mysql2
Но это также терпит неудачу.
- ОБНОВЛЕНИЕ -
Я добавил это в файл инициализатора разработки:
ThinkingSphinx.database_adapter = :mysql2
Что дает ошибку в отношении поддержки только MySQL.
Ответы
Ответ 1
Когда вы компилируете Sphinx, вы должны указать флаг --with-mysql
.
$ ./configure --with-mysql
$ make
$ sudo make install
Вам может потребоваться указать расположение файлов с библиотекой MySQL. Например, при новой установке OS X:
$ ./configure --with-mysql=/opt/local/include/mysql5
Ответ 2
В соответствии с ссылкой здесь, вы можете просто сделать следующее по homebrew (mac):
brew install sphinx --with-mysql
Это сработало для меня:)
Ответ 3
Также при установке на OSX через homebrew попробуйте следующее:
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
brew install --interactive sphinx
./configure
make
make install
exit
Ответ 4
Сгенерированный источник выглядит корректно - возможно ли, что ваша версия Sphinx была скомпилирована без поддержки MySQL?