我正在尝试使用带有Sequel宝石的红宝石的存储过程;但是它继续使我感到Mysql2 :: Error:命令不同步;您现在不能运行此命令
运行存储过程后,在文档上找不到有关多语句查询的任何信息:
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'
最佳答案
在Sequel
gem的创建者的帮助下,我提出了一个解决方案,看来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
在这种情况下,我确定我的过程将返回一行,因此我只会得到第一行。
关于mysql - 如何在Sequel中使用存储过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53614431/