ActiveRecord> MySQL Adapter> неопределенный метод `more_results ' - PullRequest
1 голос
/ 28 сентября 2010

Я включил ActiveRecord в сценарий, который я пишу, для обработки некоторых данных в базе данных MySQL. В моей среде разработки, использующей Mac OS X, все работает нормально, однако, когда я пытаюсь развернуть сценарий в среде Linux, я получаю следующую ошибку:

/activerecord-3.0.0/lib/active_record/connection_adapters/mysql_adapter.rb:623:in `select': undefined method `more_results' for #<Mysql:0x915976c> (NoMethodError)

Код, где происходит эта ошибка, вставлен ниже, в частности, от второй до последней строки, которая была закомментирована.

  def select(sql, name = nil)
    @connection.query_with_result = true
    result = execute(sql, name)
    rows = []
    result.each_hash { |row| rows << row }
    result.free
    @connection.more_results && @connection.next_result   # invoking stored procedures with CLIENT_MULTI_RESULTS requires this to tidy up else connection will be dropped 
    rows
  end

Историю того, почему этот код был введен, можно посмотреть по адресу https://rails.lighthouseapp.com/projects/8994/tickets/3151-mysql-adapter-update-to-enable-use-of-stored-procedures#ticket-3151-33

Тем не менее, я все еще не уверен, как исправить эту ошибку, не комментируя эту проблемную строку. Я не использую хранимые процедуры, поэтому это не является существенной проблемой, однако я хотел бы реализовать более расширяемое исправление.

Я использую следующие драгоценные камни в обеих средах.

activerecord (3.0.0) mysql (2.8.1)

Заранее спасибо за любые мысли о том, что здесь может происходить!

1 Ответ

1 голос
/ 09 ноября 2010

Я новичок в Ruby (ха), и столкнулся с той же проблемой, проходя этот урок: http://guides.rubyonrails.org/getting_started.html во время шага 6.1 (миграция).

Я просто обернулКоманда if, чтобы убедиться, что метод действительно существует перед вызовом, вот так:

if (@connection.respond_to?('more_results'))
      @connection.more_results && @connection.next_result    # invoking stored procedures with CLIENT_MULTI_RESULTS requires this to tidy up else connection will be dropped 
end

Тогда я смог закончить урок очень хорошо.Я не знаю, как это повлияет на пропуск этой строки кода, но в моем маленьком окне разработки это, вероятно, не имеет значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...