Mysql 使用Sphinx的sql\u范围\u查询错误
在我的生产服务器上设置Sphinx时,在尝试索引时出现了这个奇怪的错误Mysql 使用Sphinx的sql\u范围\u查询错误,mysql,ruby-on-rails,sphinx,thinking-sphinx,Mysql,Ruby On Rails,Sphinx,Thinking Sphinx,在我的生产服务器上设置Sphinx时,在尝试索引时出现了这个奇怪的错误 ERROR: index 'benefit_core': sql_range_query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 这不会发生在我的本地机器上。是的,这
ERROR: index 'benefit_core': sql_range_query: You have an error in your SQL
syntax; check the manual that corresponds to your MySQL server version for the
right syntax to use near '' at line 1
这不会发生在我的本地机器上。是的,这是一个空字符串
以前有人见过这种问题吗
benefit.rb
define_index do
# Fields
indexes category
indexes title
indexes tags
indexes description
indexes brief_description
indexes brand
indexes short_description
indexes long_description
indexes benefit_description
indexes address.city
indexes address.state
indexes address.street_1
where sanitize_sql(["active = true and expiration > ?", Time.now])
set_property :field_weights => {
:title => 15,
:tags => 10,
:brand => 10,
:description => 3
}
end
思考斯芬克斯-1.4.4
斯芬克斯-0.9.9
谢谢大家! 确保您运行的是Thinking Sphinx的最新版本,3.0.4左右。看来
sanitize\u sql出现了一些问题
也可以试着重新写一行
where sanitize_sql(["active = ? and expiration > ?", true, Time.now])
另外,请尝试注释掉所有行,并逐渐将它们添加回,以确定错误发生的确切位置。问题最终出现在sanitize\u sql
方法中。我将该行替换为:
where "active = true AND expiration > \"#{Time.now.to_formatted_s(:db)}\""
谢谢你的帮助 请从模型中发布查询和定义索引块。@Dex我添加了模型的定义索引。索引过程中会发生错误,所以我甚至没有机会测试查询。您何时看到错误?您是否运行了rake ts:config
和rake ts:rebuild