PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

FATAL:la radice del ruolo non esiste

Puoi connetterti al server Postgres con esplicito (my cioè il nome utente del sistema operativo) o implicito (timonin cioè ruolo in database.yml ) accedi.

Come vedo il tuo database.yml ha la dichiarazione del nome utente, ma solo per la produzione ambiente. L'esecuzione di test di rake senza specificare l'ambiente Rails li eseguirà contro lo sviluppo ambiente per impostazione predefinita. Ecco perché hai un errore come FATAL: role "my" does not exist .

Quindi, a seconda delle tue esigenze, devi aggiungere queste istruzioni a tutte le definizioni dei database (test e development anche):

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

Dopodiché l'applicazione Rails si collegherà come timonin utente.

La checklist completa è la seguente:

  • Crea ruolo

Ecco SQL per PostgreSQL:

CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
  NOINHERIT CREATEDB
   VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
  IS 'Timonin database role for Rails app';
  • Decommenta o aggiungi affermazioni username: timonin e password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %> nel tuo file database.yml
  • Esegui tutte le operazioni con TIMONIN_DATABASE_PASSWORD variabile:

Ecco il comando di rake modificato:

rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'

oppure:

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

per l'ambiente di prova.