Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 带有事务的Rails multi_db_Ruby On Rails_Rubygems_Gem - Fatal编程技术网

Ruby on rails 带有事务的Rails multi_db

Ruby on rails 带有事务的Rails multi_db,ruby-on-rails,rubygems,gem,Ruby On Rails,Rubygems,Gem,我最近在rails 2.3.10应用程序上安装了multi_db gem,以便使用MySql主/从复制 自安装gem以来,每次我在代码中使用事务时,例如: MyModel.connection.transaction do …一些代码。。。 结束 我得到一个异常:对于true:TrueClass,NoMethodError未定义的方法“assert\u valid\u keys” 关于如何在事务中使用multi_db有什么想法吗 编辑: 自从我安装了multi_db之后,我发现了一些有趣的东西

我最近在rails 2.3.10应用程序上安装了multi_db gem,以便使用MySql主/从复制

自安装gem以来,每次我在代码中使用事务时,例如:

MyModel.connection.transaction do …一些代码。。。 结束

我得到一个异常:对于true:TrueClass,NoMethodError未定义的方法“assert\u valid\u keys”

关于如何在事务中使用multi_db有什么想法吗

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

MyModel.connection.transaction do
  test = 1+2
end
在大多数情况下返回以下异常:对于true:TrueClass,NoMethodError未定义方法“assert\u valid\u keys”

但如果我跑步:

MyModel.connection.transaction({}) do
  test = 1+2
end
一切顺利

我的直觉告诉我,基于受虐狂gem的multi_db与我使用的其他gem(可能是死锁重试或ar扩展)不兼容


有什么想法吗?

multi_db与ActiveRecord 2.3.10不完全兼容。它使用不同的参数调用连接上的transaction方法,这些参数是可以接受的,请参见此处

您必须要么不使用事务,要么降级Rails,要么修复multi_db请执行!,或者干脆把那块宝石全部去掉


您可以在2009年1月Rails 2.3.0发布之前的ActiveRecord::ConnectionAdapters::DatabaseStatements中看到事务的参数在哪里发生了更改。

由于assert\u valid\u键是在哈希上定义的,我想您在代码中做了一些错误的事情。这可能有助于在此处发布一段代码片段。自从我安装了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结束一切运行平稳。我的直觉告诉我,基于受虐狂gem的multi_db与我使用的其他gem(可能是死锁重试或ar扩展)不兼容。有什么想法吗?这是重复问题中的堆栈跟踪,供参考: