[英]Rails cant connect to database with ActiveRecord::establish_connection
I am opening rails console session and do: 我正在打开rails控制台会话并执行:
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
my config/database.yml
file has to be fine, because HTTP requests are working fine. 我的
config/database.yml
文件必须没问题,因为HTTP请求工作正常。
Why I cant establish connection in rails console this way? 为什么我不能这样在rails console中建立连接?
I am asking because I have similar use of establish_connection
in one of config/initializers/
file, that is configuring sneakers workers like here and there it is also returning me false
on ActiveRecord::Base.connected?
我问,因为我在
config/initializers/
文件中有类似的使用了establish_connection
,就是在这里和那里配置运动鞋工人它也在ActiveRecord::Base.connected?
上返回false
ActiveRecord::Base.connected?
To connect again you can use 要再次连接,您可以使用
ActiveRecord::Base.connect
AR calls establish_connection only once, for ActiveRecord::Base. 对于ActiveRecord :: Base,AR只调用一次Establish_connection。 All subclasses use the one connection.
所有子类都使用一个连接。
You can manually call establish connection yourself on some subclasses. 您可以在某些子类上自己手动调用建立连接。 This is very convenient for using two databases at once, eg
这对于一次使用两个数据库非常方便,例如
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.
要连接,您可以使用ActiveRecord :: Base.connection,而不是可以调用Somemodel.first,它应该可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.