sql >> Base de Datos >  >> RDS >> PostgreSQL

FATAL:la raíz del rol no existe

Puede conectarse al servidor de Postgres con explícito (my es decir, nombre de usuario del sistema operativo) o implícito (timonin es decir, rol en database.yml ) iniciar sesión.

Como veo tu database.yml tiene declaración de nombre de usuario, pero solo para producción ambiente. Ejecutar pruebas de rake sin especificar el entorno de Rails las ejecutará contra el desarrollo entorno por defecto. Es por eso que tienes un error como FATAL: role "my" does not exist .

Entonces, dependiendo de sus necesidades, debe agregar estas declaraciones a las definiciones de todas las bases de datos (test y development también):

  username: timonin
  password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>

Después de eso, su aplicación Rails se conectará como timonin usuario.

La lista de verificación completa es la siguiente:

  • Crear rol

Aquí está SQL para PostgreSQL:

CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
  NOINHERIT CREATEDB
   VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
  IS 'Timonin database role for Rails app';
  • Eliminar comentarios o agregar afirmaciones username: timonin y password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %> a su archivo base de datos.yml
  • Corre todas las operaciones con TIMONIN_DATABASE_PASSWORD variable:

Aquí se cambia el comando de rake:

rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'

o:

rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test

para el entorno de prueba.