思考斯芬克斯出现未知类型“mysql”问题;跳过。

19

我使用的是ts版本2.0.5、rails 3.0.9和mysql2版本0.2.11。

在尝试使用rake ts:index创建我的索引时,我遇到了以下错误:

ERROR: source 'technical_core_0': unknown type 'mysql'; skipping.

我的 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。

4个回答

64

根据此链接,在homebrew(mac)上简单执行以下操作即可:

brew install sphinx --with-mysql

那对我有效 :)


2
您可以随时运行brew options [软件包名称]来查看所有可用的标志,例如--mysql或--postgres。 - j_mcnally
5
因为已经安装了Sphinx搜索,所以必须重新安装Sphinx并添加MySQL支持,命令为brew reinstall sphinx --mysql - RNickMcCandless
2
--mysql开关已经过时,请使用--with-mysql。 - TerryS

14

当你编译Sphinx时,应该指定 --with-mysql 标志。

$ ./configure --with-mysql
$ make
$ sudo make install

您可能需要指定MySQL库包含文件的位置。例如,在新安装的OS X上:

$ ./configure --with-mysql=/opt/local/include/mysql5

我稍后会尝试这个...谢谢。 - Jenny Blunt
你好,这是在Rails3上运行的 - 安装gem并将其包含在gem文件中不就足够了吗? - Jenny Blunt
2
不,Thinking Sphinx是Ruby的Sphinx Search接口,您需要在系统上安装Sphinx。 - basicxman
好的,这就是我缺失的部分...我没有意识到我也需要安装Sphinx。已经安装了,但还有另一个错误,不过我可以解决它。J - Jenny Blunt

3

在使用homebrew在OSX上安装时,请尝试以下操作:

sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
brew install --interactive sphinx
./configure
make
make install
exit

2
生成的源代码看起来正确 - 你的Sphinx版本是否可能没有编译MySQL支持?

嗨,Pat,我刚刚安装了这个宝石,并在mysql中看到了它。也许我可以尝试将其安装为插件,但我有点想避免这样做。现在这真的很令人沮丧... - Jenny Blunt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接