Role does not exist and unable to create database when using PostgreSQL Role does not exist and unable to create database when using PostgreSQL postgresql postgresql

Role does not exist and unable to create database when using PostgreSQL


Add a username to your database.yml, might as well use your application's name (or some variant of the name) as the username, I'll use app_name as a placeholder:

development:  adapter: postgresql  encoding: utf8  database: app_development  pool: 5  username: app_name  password:

Then create the user (AKA "role") inside PostgreSQL using psql.exe:

$ psql -d postgrespostgres=# create role app_name login createdb;postgres=# \q

The first line is in your terminal, the next two are inside psql. Then do your rake db:create.

The User user is possibly a default but user is already taken for other purposes in PostgreSQL so you'd have to quote it to preserve the case if you wanted to use User as a username:

postgres=# create role "User" login createdb;

You're better off creating one user per-application anyway.

You'll want to do similar things for your test entry in database.yml as well.


PostgreSQL will try to create the database with your account (login) name if a username isn't specified in your config/database.yml. On OS X and Linux you can you see who this is with whoami. Looks like you're using Windows.

Solution A:Create a PostgreSQL user that matches the one it's looking for. For example

createuser --superuser some_user

Solution B:Change the DB user by explicitly setting a username as shown in mu's answer.


If you have a specific account/user on your machine for postgres called postgres for example.

Then executing this command will bring a prompt for you to enter a role name.

sudo -u postgres createuser --interactive

Then doing

rake db:create

Should work!