如何打开rails控制台以访问rails 6中的多个数据库?

Posted

技术标签:

【中文标题】如何打开rails控制台以访问rails 6中的多个数据库?【英文标题】:How to open rails console for access multiple database in rails 6? 【发布时间】:2021-10-27 02:04:49 【问题描述】:

我的项目中有多个数据库,我想打开 rails 控制台来访问这两个数据库。

目前我只能获取一个默认数据库的数据。

也就是说,如何打开特定的数据库控制台?

【问题讨论】:

请提供更多信息。你试过什么?错误是什么?数据库是什么?它们是如何配置的? activerecord 是如何设置的?通常,rails 控制台将连接到所有数据库,而 activerecord 将连接到它们配置的那个......所以你不需要做任何事情。 【参考方案1】:

您为什么不阅读文档https://guides.rubyonrails.org/active_record_multiple_databases.html。 你应该能够找到你需要的东西。 connected_to 会自动或手动完成数据库切换的技巧。

或者 https://api.rubyonrails.org/classes/ActiveRecord/ConnectionHandling.html#method-i-connected_to

ActiveRecord::Base.connected_to(database: :mydb) do
  # Do something here...
end

【讨论】:

【参考方案2】:

也就是说,如何打开特定的数据库控制台?

来自official guide:

bin/rails dbconsole 找出您正在使用的数据库,然后将您放入您将使用的任何命令行界面(并找出提供给它的命令行参数!)。它支持 mysql(包括 MariaDB)、PostgreSQL 和 SQLite3。

您也可以使用别名“db”来调用 dbconsole:bin/rails db

如果您使用多个数据库,bin/rails dbconsole 将 默认连接到主数据库。您可以指定哪个 使用--database--db 连接的数据库:

bin/rails dbconsole --database=animals

所以命令是

rails db --db=db_name_from_database_yml

例如,您的database.yml 中有

production:
  my_primary:
    adapter: postgresql
    database: some_db_name

在这种情况下,您的命令将是

bundle exec rails db --db=my_primary -e=production

【讨论】:

@machnicov 这不是正确的答案。我想打开 rails 控制台而不是 db 控制台。感谢您的宝贵时间。 @JigarBhatt 这意味着您的问题不正确,而不是我的回答。请再次阅读并在必要时编辑问题 是的,我更新了我的问题,现在你知道答案了吗?

以上是关于如何打开rails控制台以访问rails 6中的多个数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Rails 6中获取用户与朋友的多对多关联的created_at?

如何获取 Rails 应用程序的 CORS 标头以访问 aws s3 存储桶?

(Rails)从不同视图中的控制器访问方法

rails mongoid中的多键索引

Rails:如何访问 lib 文件夹类中的“请求”?

如何将现有的一对多关系迁移到 Rails 和 ActiveRecord 中的多对多