【问题标题】:How to find database name in rails console如何在 Rails 控制台中查找数据库名称
【发布时间】:2015-04-25 20:54:11
【问题描述】:

这很奇怪。在我的 Rails 4 database.yml 中,我有以下内容:

development:
  adapter: postgresql
  encoding: unicode
  database: inspector_development
  password: 
  pool: 5

我从 Heroku 复制了生产数据库,并使用此表单将其导入到我的本地 Postgresql 副本中

curl -o latest.dump `heroku pgbackups:url --account personal`
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U sam -d inspector_development latest.dump

结果显示 osx 上的 inspector_development 数据库中的 PGadmin 中有 88 个预期用户。但是,即使重新启动 rails 应用程序,User 表仍然只显示一个用户,而不是我在 PGadmin 中看到的 88。

我搜索了如何确定 Rails 将什么视为数据库名称的属性,以确定它在哪里找到这些不存在的记录?

更仔细地查看 PGadmin 中的 User 表,我看到零列。也许PGadmin错了?我无法确定 db Rails 正在寻找的位置,以便我可以解决这个问题,谢谢,山姆

【问题讨论】:

  • 从您的应用程序根目录尝试rails db,看看它连接到哪个数据库。如果这是您的开发数据库,​​它应该使用 inspector_development=# 打开 postgres 控制台
  • 我通常将其还原为不同的数据库名称并将 database.yml 指向该名称。到目前为止,这种方法没有遇到任何问题。

标签: postgresql ruby-on-rails-4


【解决方案1】:

这适用于 Rails 3 和 Rails 4

ActiveRecord::Base.connection.current_database

但这仅适用于已实现该方法的驱动程序。例如,它不适用于 SQLite,但适用于 mysql 和 postgres。

【讨论】:

    【解决方案2】:

    对于 Postgres,ActiveRecord::Base.connection.config 也可以使用,它将为您提供有关所有数据库配置的更详细的输出:

    => {:adapter=>"postgresql", :encoding=>"unicode", :port=>5432, :host=>"appdb", :pool=>5, :username=>"postgres", :password=>"example", :database=>"app_dev"}
    

    这适用于 Rails 5.2.6*

    【讨论】:

      猜你喜欢
      • 2014-09-12
      • 2011-12-05
      • 2016-08-18
      • 1970-01-01
      • 2014-06-17
      • 2020-03-08
      • 1970-01-01
      • 2014-03-07
      • 2011-07-21
      相关资源
      最近更新 更多