mysql - Rails:Mysql2::错误:命令不同步

标签 mysql ruby-on-rails ruby activerecord

我直接使用 Model.connection 在 Rails 中运行 MySQL 存储过程。所有数据都正确插入数据库并按预期返回,但我在测试中遇到以下错误:

  1. ActiveRecord::StatementInvalid: Mysql2::Error: 命令不同步;你现在不能运行这个命令:ROLLBACK

  2. ActiveRecord::StatementInvalid: Mysql2::Error: 命令不同步;你现在不能运行这个命令:BEGIN

暂定一:

Model.connection.transaction do
  result = Model.connection.select_value("CALL myStoredProcedure(...);")
end

暂定二:

Model.connection.begin_db_transaction
result = Model.connection.select_value("CALL myStoredProcedure(...);")
Model.connection.commit_db_transaction

暂定3:

result = Model.connection.select_value("CALL myStoredProcedure(...);")
Model.clear_active_connections!

尝试 #3 导致“ActiveRecord::StatementInvalid:Mysql2::Error:命令不同步;您现在无法运行此命令:BEGIN”消失。命令 ROLLBACK 的错误仍然存​​在。

我做错了什么?

谢谢

最佳答案

我怀疑您的模型连接试图同时运行相互冲突的查询。不要使用 Model.connection.select_value,而是尝试使用 ActiveRecord::Base.connection.execute :

result = ActiveRecord::Base.connection.execute "CALL myStoredProcedure(...);"
ActiveRecord::Base.clear_active_connections!

关于mysql - Rails:Mysql2::错误:命令不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32138043/

相关文章:

ruby-on-rails - 将 Rails 4 中的 GET 路由限制为仅应用程序

mysql - SQL 匹配/反对词序

mysql - 如何使用特定条件的最高值对列表进行排序?

ruby-on-rails - 按键对嵌套哈希中的项目进行排序

ruby-on-rails - Friendly_id 使用来自belongs_to 关联的值

ruby-on-rails - rails : how to format and organize routes

irb 中的 Ruby 字符串比较和字符编码

ruby - 需要一个正则表达式来匹配动态确定的重复计数

php - 如何为数据库中的 N 个用户维护单个用户的多个唯一数据

mysql - 一些使用日期格式的选择查询