質問: ### やりたいこと `bin/rails db`とコマンドを叩いてローカルのデータベース(postgresql)に接続したい。 ### エラー 上記コマンドを実行すると、 ``` `db_config': 'primary' database is not configured for 'development'. Available configuration:.... (ActiveRecord::AdapterNotSpecified) ``` データベースを特定できませんというエラーに遭遇しています。 ### やったこと * `bin/rails db:reset`でデータベースの作り直し * `initdb /usr/local/var/postgres`でpostgresqlの初期化 * postgresqlの再起動 database.ymlの設定は開発環境でこのような設定になっております ``` 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 ``` 複数DBを使っていて、おそらくデフォルトでどのDBを参照したらいいのかが定まっていないのではないかと推測しています。 'primary'というdatabaseもよくわからず、データベースを特定できない理由がわからなくて困っています。 何かわかる方いらっしゃいましたら、コメントいただけると嬉しいです。よろしくお願いします。
回答: 複数のデータベースがある場合は、 `--database` あるいは `--db` フラグでどのデータベースに接続するかを指定します。 ``` $ bin/rails db --database=hogehoge ``` 公式ドキュメント(英語)。 "primary"は、DB設定が(環境毎に)1つしかない場合にRailsが内部的に設定する識別子で、`--database`フラグで指定がない場合には db コマンドも"primary"という識別子のデータベースに接続しようとします。 複数のデータベースがある場合、設定のハッシュのキーが識別子として使われるので、どれか1つのキーを"primary"にすることで、そのデータベースには`--database`フラグを指定しなくてもデフォルトで接続できます。 ``` development: primary: <<: *default database: hogehoge_development fugafuga: <<: *default database: fugafuga_development replica: true ```