Ruby on rails ActiveRecord::StatementInvalid(Mysql::Error:过程db_name.proc_spName可以';在给定上下文中不返回结果集:

Ruby on rails ActiveRecord::StatementInvalid(Mysql::Error:过程db_name.proc_spName可以';在给定上下文中不返回结果集:,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我已经使用activerecord从db访问数据。它在localhost中工作正常,但当我在另一台服务器上尝试时,出现以下错误: ActiveRecord::StatementInvalid (Mysql::Error: PROCEDURE db_name.proc_spName can't return a result set in the given context: CALL proc_spName(............)): /vendor/rails/activereco

我已经使用activerecord从db访问数据。它在localhost中工作正常,但当我在另一台服务器上尝试时,出现以下错误:

ActiveRecord::StatementInvalid (Mysql::Error: PROCEDURE db_name.proc_spName can't return a result set in the given context: CALL proc_spName(............)):
    /vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:188:in `log'
    /vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:310:in `execute'
    /app/controllers/keywordprocessor_controller.rb:306:in `result'
    /vendor/rails/actionpack/lib/action_controller/base.rb:1256:in `send'
顺便说一句,下面是我得到以下错误的一行

sql = "CALL proc_getresults"
res = ActiveRecord::Base.connection.execute(sql)

如果您有任何想法,我们将不胜感激。

因为BJG向您展示了link可以很好地解释这一点;因为ActiveRecord希望返回一个结果集。您可以使用这些方法来使用execute调用存储过程

 SELECT proc_getresults() as Results FROM TABLE ...

这里已经提出了一个可能有用的类似问题: