74453


### やりたいこと

`bin/rails db`とコマンドを叩いてローカルのデータベース(postgresql)に接続したい。

### エラー

上記コマンドを実行すると、

[code]

    `db_config': 'primary' database is not configured for 'development'. Available configuration:.... (ActiveRecord::AdapterNotSpecified)
    
[/code]

データベースを特定できませんというエラーに遭遇しています。

### やったこと

  * `bin/rails db:reset`でデータベースの作り直し
  * `initdb /usr/local/var/postgres`でpostgresqlの初期化
  * postgresqlの再起動

database.ymlの設定は開発環境でこのような設定になっております

[code]

    default: &default
      adapter: postgresql
      encoding: unicode
      pool: <%= ENV.fetch("DB_CONNECTION_POOL") { 5 } %>
    
    development:
     hogehoge:
        <<: *default
        database: hogehoge_development
     fugafuga:
        <<: *default
        database: fugafuga_development
        replica: true
    
[/code]

複数DBを使っていて、おそらくデフォルトでどのDBを参照したらいいのかが定まっていないのではないかと推測しています。  
'primary'というdatabaseもよくわからず、データベースを特定できない理由がわからなくて困っています。  
何かわかる方いらっしゃいましたら、コメントいただけると嬉しいです。よろしくお願いします。


CC BY-SA 4.0
2021-03-04T13:01:31.470
74420
2021-03-06T06:53:09.233
2021-03-06T01:26:19.610
43337
43337
question
ruby-on-rails
`bin/rails db`でローカルのデータベースに接続したい


複数のデータベースがある場合は、 `--database` あるいは `--db` フラグでどのデータベースに接続するかを指定します。

[code]

    $ bin/rails db --database=hogehoge
    
[/code]

[公式ドキュメント(英語)](https://guides.rubyonrails.org/command_line.html#bin-rails-
dbconsole)。

* * *

"primary"は、DB設定が（環境毎に）1つしかない場合に[Railsが内部的に設定する識別子](https://github.com/rails/rails/blob/v6.1.3/activerecord/lib/active_record/database_configurations.rb#L172)で、`--database`フラグで指定がない場合には
db
コマンドも["primary"という識別子のデータベース](https://github.com/rails/rails/blob/v6.1.3/railties/lib/rails/commands/dbconsole/dbconsole_command.rb#L119-L121)に接続しようとします。

複数のデータベースがある場合、[設定のハッシュのキーが識別子として使われる](https://github.com/rails/rails/blob/v6.1.3/activerecord/lib/active_record/database_configurations.rb#L183-L187)ので、どれか1つのキーを"primary"にすることで、そのデータベースには`--database`フラグを指定しなくてもデフォルトで接続できます。

[code]

    development:
     primary:
        <<: *default
        database: hogehoge_development
     fugafuga:
        <<: *default
        database: fugafuga_development
        replica: true
    
[/code]


CC BY-SA 4.0
2021-03-06T06:53:09.233
74453
2021-03-06T06:53:09.233
30
74420
answer