Mysql 使用Sphinx的sql\u范围\u查询错误

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 这不会发生在我的本地机器上。是的,这

在我的生产服务器上设置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
这不会发生在我的本地机器上。是的,这是一个空字符串

以前有人见过这种问题吗

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