【问题标题】:How to use stored procedures with Sequel如何在 Sequel 中使用存储过程
【发布时间】:2018-12-04 13:50:16
【问题描述】:

我正在尝试使用带有 Sequel gem 的 ruby​​ 存储过程;但它继续向我抛出 Mysql2::Error: Commands out of sync;你现在不能运行这个命令 运行存储过程后,在文档上找不到有关多语句查询的任何信息:

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'

【问题讨论】:

标签: mysql ruby sequel


【解决方案1】:

Sequelgem创建者的帮助下想出了一个解决办法,看来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

在这种情况下,我确信我的过程将返回一行,所以我只得到第一行。

猜你喜欢
  • 1970-01-01
  • 2012-09-22
  • 2011-07-24
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多