Hsp*_*zio 3 ruby mysql activerecord ruby-on-rails
我直接使用 Model.connection 在 Rails 中运行 MySQL 存储过程。所有数据都正确插入到数据库中并按预期返回,但我在测试中收到以下错误:
ActiveRecord::StatementInvalid: Mysql2::Error: 命令不同步;您现在无法运行此命令:ROLLBACK
ActiveRecord::StatementInvalid: Mysql2::Error: 命令不同步;您现在无法运行此命令:BEGIN
暂定1:
Model.connection.transaction do
result = Model.connection.select_value("CALL myStoredProcedure(...);")
end
Run Code Online (Sandbox Code Playgroud)
暂定2:
Model.connection.begin_db_transaction
result = Model.connection.select_value("CALL myStoredProcedure(...);")
Model.connection.commit_db_transaction
Run Code Online (Sandbox Code Playgroud)
暂定3:
result = Model.connection.select_value("CALL myStoredProcedure(...);")
Model.clear_active_connections!
Run Code Online (Sandbox Code Playgroud)
暂定 #3 导致“ActiveRecord::StatementInvalid: Mysql2::Error: Commands out ofsync; you can't run this command now: BEGIN”消失。命令 ROLLBACK 的错误仍然存在。
我究竟做错了什么?
谢谢
我怀疑您的模型的连接正在尝试同时运行冲突的查询。不要使用 ,而是Model.connection.select_value尝试使用ActiveRecord::Base.connection.execute:
result = ActiveRecord::Base.connection.execute "CALL myStoredProcedure(...);"
ActiveRecord::Base.clear_active_connections!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2716 次 |
| 最近记录: |