简体   繁体   English

Rails无法使用ActiveRecord :: establish_connection连接到数据库

[英]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.

相关问题 无法打开rails console:生成数据库未配置,establish_connection引发ActiveRecord :: AdapterNotSpecified - Can't open rails console: production database not configured, establish_connection raises ActiveRecord::AdapterNotSpecified 动态子类化和ActiveRecord建立与PostgreSQL数据库的连接 - Dynamic Subclassing and ActiveRecord establish_connection with PostgreSQL database 您可以使用Establishment_connection在Rails中连接到SQL视图吗 - Can you use establish_connection to connect to an SQL view in rails 用rails查询外部数据库。 抽象类+建立连接? - Query external database with rails. Abstract Class + establish_connection? 如何在Rails中与多个数据库并行建立连接? - How to establish_connection with more than one database in parallel in Rails? 拦截ActiveRecord建立连接初始化过程 - Intercept ActiveRecord establish_connection initialization process 了解establish_connection如何在ActiveRecord中工作 - Understanding how establish_connection works in ActiveRecord Rails-建立连接和嵌套表单 - Rails - establish_connection and nested forms 建立连接&#39;:数据库配置指定不存在的mysql2适配器(ActiveRecord::AdapterNotFound) - establish_connection': database configuration specifies nonexistent mysql2 adapter (ActiveRecord::AdapterNotFound) 在ActiveRecord模型上使用Establishment_connection时,AdapterNotSpecified - AdapterNotSpecified when using establish_connection on ActiveRecord model
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM