mysql2的未定义方法`next_result'(rails 3)

时间:2013-02-03 20:22:21

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

我曾经使用该软件的第二个版本,没有任何问题。在我的上一次申请中,我决定使用最新的“思考 - 狮身人面像”。我有一个奇怪的错误。

> NoMethodError in Adverts#index undefined method `next_result' for
> #<Mysql2::Client:0xac86a54>

我的宝石文件

    gem 'rails', '3.2.11'
    gem 'pg', '0.14.0'  # My database

# for sphinx
                gem "mysql2", "~> 0.3.11"
                gem "thinking-sphinx", "~> 3.0.0"

索引:

ThinkingSphinx::Index.define :car, :with => :active_record do
   has user_id, model_id, city_id, area_id, engine_id, mileage
  end

thinking_sphinx.yml

    development:
      port: 9312
    test:
      port: 9313
    production:
      port: 9312

控制器:

class AdvertsController < ApplicationController
  def index
    @cars = Car.by_model_id(@model_id)
  end
end

型号:

class Car < ActiveRecord::Base
    include ThinkingSphinx::Scopes

    sphinx_scope(:by_model_id) { |id|
      {:with => {:model_id => id}}
    }
end

我的观点

  

%ul = render:partial =&gt; “item”,:collection =&gt; @cars,:as =&gt; :项目

项目

  

%的Li = item.id

怎么了?

3 个答案:

答案 0 :(得分:7)

在我花了2个多小时的时间之后,我再次疯狂地阅读了READ ME文档(https://github.com/pat/thinking-sphinx),发现它是导致的mysql gem版本。

升级到'mysql2','0.3.12b4'解决了这个问题......

答案 1 :(得分:2)

gem 'mysql2', '~> 0.3.12b5'解决了这个问题。

https://github.com/pat/thinking-sphinx/issues/446

也适用于0.3.12b4确认。

答案 2 :(得分:0)

看起来您的查询结果集不正常。你有没有检查过你是否得到了你认为应该的结果。控制台是一个很有价值的工具。在控制台中测试您的查询以确保。如果结果为空,您也可以考虑检入代码?在尝试使用它之前,你不要在生产中遇到这种情况。