gpt4 book ai didi

ruby-on-rails - Rails 无法使用 ActiveRecord::establish_connection 连接到数据库

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:19 24 4
gpt4 key购买 nike

我正在打开 Rails 控制台 session 并执行以下操作:

2.6.3 :048 > ActiveRecord::Base.connected?
=> true
2.6.3 :049 > ActiveRecord::Base.connection_pool.disconnect!
=> []
2.6.3 :050 > ActiveRecord::Base.connected?
=> false
2.6.3 :051 > ActiveRecord::Base.establish_connection(:development)
=> #<ActiveRecord::ConnectionAdapters::ConnectionPool:0x00 ... >
2.6.3 :052 > ActiveRecord::Base.connected?
=> false
2.6.3 :053 > SomeModel.connection
=> #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x00 ...>
2.6.3 :055 > ActiveRecord::Base.connected?
=> true
$ rails -v
Rails 5.2.3

我的 config/database.yml 文件必须没问题,因为 HTTP 请求工作正常。

为什么我无法通过这种方式在 Rails 控制台中建立连接?

我问是因为我在 config/initializers/ 文件之一中对 establish_connection 有类似的使用,即配置 sneakers worker like here它也在 ActiveRecord::Base.connected?

上返回给我 false

最佳答案

要再次连接,您可以使用

ActiveRecord::Base.connect

AR 只为 ActiveRecord::Base 调用一次 establish_connection。所有子类都使用一个连接。

您可以在某些子类上自己手动调用建立连接。这对于同时使用两个数据库非常方便,例如

class MyMainUser < ActiveRecord::Base; end 
class MyOtherDb < ActiveRecord::Base; end
class MyOtherUser < MyOtherDb; end

MyOtherDb.establish_connection ...

MyMainUser.first # uses default db
MyOtherUser.first # uses other db
You can't do queries that would cross databases though.

关于ruby-on-rails - Rails 无法使用 ActiveRecord::establish_connection 连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57804420/

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