gpt4 book ai didi

ruby - ActiveRecord 3.1.0 多数据库

转载 作者:数据小太阳 更新时间:2023-10-29 06:49:35 25 4
gpt4 key购买 nike

我正在尝试将 ActiveRecord gem 升级到最新的 3.1.0 版本并看到出现了很多异常,我认为这是由于我们处理多个数据库的方式所致。

对于我们的每个数据库,我们指定一个单独的基类,它继承自ActiveRecord::Base,并在其中调用establish_connection。没有跨数据库关系。到目前为止,这对我们来说效果很好。

升级到 ActiveRecord 3.1.0 后,我看到它在遍历关系时失败并出现 ActiveRecord::ConnectionNotEstablished 异常(即,它将成功地从数据库,但在导航到相关类时失败)。

回溯的第一行是C:/Ruby/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:410:在 'retrieve_connection' 中,所以我对此进行了深入研究。方法定义如下:

def retrieve_connection(klass) #:nodoc:
pool = retrieve_connection_pool(klass)
(pool && pool.connection) or raise ConnectionNotEstablished
end

我的简单测试(puts Customer.first.address)调用了 retrieve_connection 3 次。两次使用 Customer 作为 klass 参数,一次使用 ActiveRecord::Base 作为参数 - 这是当 establish_connection 失败时 尚未为 ActiveRecord::Base 调用。

那么对于实际问题 - 在 ActiveRecord 中是否有一种新的推荐方法来处理多个数据库连接?如果有,那是什么?

如果不是,是什么导致了这个问题?

最佳答案

我昨天升级到 ActiveRecord 3.1.0 时遇到了同样的问题。我不能说在 ActiveRecord 3.1 中是否有一种新的推荐方法来处理多个数据库连接,但我确实找到了一种解除阻塞的方法。

看来现在必须在 ActiveRecord::Base 上建立连接,以便确定适配器的表名长度/规则。除了在我的数据库初始化程序中建立的其余连接外,我现在还建立了一个 ActiveRecord::Base 连接到我的一个数据库(哪个数据库无关紧要)。

我认为可以找到更好的解决方案,但我很高兴现在可以畅通无阻。

关于ruby - ActiveRecord 3.1.0 多数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7390623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com