RailsをPostgreSQLと一緒に使い、マイグレーションなどの処理をしようとした際にActiveRecord::NoDatabaseError
としてFATAL: role "xxx" does not exist
のようなエラーに遭遇することがある。これは端的に言うとデータベースを操作するために必要なユーザー(role)が存在しないよという旨のエラーだ。これを解決するにはとりあえずスーパーユーザー権限をもったユーザーを作成してやればよい。
1. 対話型ターミナルにログイン
$ sudo -u postgres psql
2. スーパーユーザー権限のロールを作成
たとえばizumisy
という名前のユーザーを作成する場合にはこのようにする。
postgres=# create role izumisy with superuser login password '';
3. ロール一覧で作成を確認
最後に\du
でロールの一覧をチェックする。
postgres=# \du
List of roles
Role name | Attributes | Member of
------------+------------------------------------------------------------+-----------
izumisy | Superuser | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
問題なければ\q
でターミナルを抜けておわり。