带交易的Rails multi_db[英] Rails multi_db with transaction

本文是小编为大家收集整理的关于带交易的Rails multi_db的处理方法,想解了带交易的Rails multi_db的问题怎么解决?带交易的Rails multi_db问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我最近在Rails 2.3.10应用程序上安装了Multi_db Gem

自安装宝石以来,每次我在代码中使用交易时,例如:

MyModel.connection.transaction do ...some code... end

我有一个例外:NoMethodError undefined method 'assert_valid_keys' for true:TrueClass

关于如何使用Multi_db与交易的任何想法?

编辑: iv'e发现了一些有趣的东西,自从我安装了multi_db

以来
MyModel.connection.transaction do
  test = 1+2
end

返回以下异常(在大多数情况下):NoMethodError undefined method 'assert_valid_keys' for true:TrueClass

,但是如果我运行:

MyModel.connection.transaction({}) do
  test = 1+2
end

一切顺利运行.

我的肠道填充告诉我,multi_db(基于受虐狂的宝石)与我使用的其他宝石之一"播放"(也许:deadlock_retry或ar-extensions).

有什么想法?

推荐答案

multi_db与ActivereCord 2.3.10不完全兼容.它在与可接受的不同参数上的连接上调用transaction方法(请参见呼叫网站在这里).

您必须不使用交易,降级导轨,修复Multi_db(请执行!),或者完全删除该宝石.

您可以看到在这里发生了transaction的参数transaction: ConnectionAdapters :: DataBasestatement,早于2009年1月(在Rails 2.3.0发布之前).

本文地址:https://www.itbaoku.cn/post/786318.html