【问题标题】:Problems with indexer query with Thinking Sphinx and Postgresql in productio在生产中使用 Thinking Sphinx 和 Postgresql 进行索引器查询的问题
【发布时间】:2012-06-23 07:36:48
【问题描述】:

我正在使用 Rails 3.2.3、Sphinx 2.0.1 beta 和 Postgresql 9.1.3 进行开发,索引如下:

define_index do
  indexes :name
  indexes :city

  has :id
  has :gender_cd, as :gender, type: :integer
  has "extract(year from age(birthdate))", as: :age, type: :integer
  set_property delta: true
end

它在开发和工作、搜索等方面的索引很好。 但是当我部署到我的生产服务器时,我从索引器中得到以下信息:

(DSN=blah blah blah).
total 0 docs, 0 bytes
total 0.023 sec, 0 bytes/sec, 0.00 docs/sec
indexing index 'user_delta'...
ERROR: index 'user_delta': sql_range_query: ERROR:  column "users.birthdate" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: ... "users"."gender_cd" AS "gender", extract(year from age(birthdate)...

我认为问题出在 8.4 pgsql 中,但即使在 9.1.4 中仍然存在。 sphinx 版本比 dev 中的 2.0.4-release 版本更新。

我知道 GROUP BY 包含的这个问题,这在使用 Postgres 时是特定的,但为什么它在开发环境中工作?

【问题讨论】:

    标签: ruby-on-rails postgresql thinking-sphinx


    【解决方案1】:

    在 9.1 之前的 PostgreSQL 版本中,您需要 GROUP BY 结果中不是由聚合函数生成的所有列。在版本 9.1 及更高版本中,您可以省略 在功能上依赖包含在 GROUP BY 子句中的列的列。因此,如果问题仍然存在于 9.1,您可能缺少主键定义。

    http://www.postgresql.org/docs/9.1/interactive/sql-select.html#SQL-GROUPBY

    【讨论】:

    • 在我的本地主机上我没有遇到这个问题。区别在哪里?
    • 我猜它们是不同版本的 PostgreSQL 或者表上的主键定义不一样。
    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多