Как использовать хранимые процедуры с Sequel - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь использовать процедуру хранилища от ruby ​​с гемом Sequel;но он продолжает выдавать мне Mysql2 :: Ошибка: команды не синхронизированы;Вы не можете выполнить эту команду сейчас после запуска хранимой процедуры, не можете найти что-либо о запросе с несколькими операторами в документации:

MyModel.db['CALL get_info("arg")').first
# => {col: val, col2: val}
MyModel.db['CALL get_info("arg")').first
# => Sequel::DatabaseDisconnectError: Mysql2::Error: Commands out of sync; you can't run this command now
from /usr/local/lib/ruby/gems/2.3.0/gems/mysql2-0.4.5/lib/mysql2/client.rb:120:in `_query'

1 Ответ

0 голосов
/ 06 декабря 2018

С помощью создателя Sequel gem I я придумаю решение, похоже, что Sequel не поддерживает этот тип возвращаемого набора, поэтому необходимо использовать драйвер mysql2:

res = nil
Domain.db.synchronize do |conn|
  res = conn.query("CALL sp_panel_info('#{self.code}')")

  while conn.next_result
    conn.store_result
  end
end
row = res.first

В этом случае я точно знаю, что моя процедура вернет одну строку, поэтому я получу только первую.

...