PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SCHWERWIEGEND:Rollenstamm existiert nicht

Sie können sich explizit mit dem Postgres-Server verbinden (my d.h. OS-Benutzername) oder implizit (timonin d.h. Rolle in database.yml ) anmelden.

Wie ich Ihre database.yml sehe hat eine Benutzernamen-Anweisung, aber nur für die Produktion Umgebung. Wenn Sie Rake-Tests ausführen, ohne die Rails-Umgebung anzugeben, werden sie gegen die Entwicklung ausgeführt Umgebung standardmäßig. Aus diesem Grund haben Sie einen Fehler wie FATAL: role "my" does not exist .

Je nach Bedarf müssen Sie diese Anweisungen also zu allen Datenbankdefinitionen hinzufügen (test und development auch):

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

Danach verbindet sich Ihre Rails-Anwendung als timonin Benutzer.

Die vollständige Checkliste lautet wie folgt:

  • Rolle erstellen

Hier ist SQL für PostgreSQL:

CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
  NOINHERIT CREATEDB
   VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
  IS 'Timonin database role for Rails app';
  • Entkommentieren Sie oder fügen Sie Aussagen hinzu username: timonin und password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %> in Ihre database.yml-Datei
  • Laufen alle Operationen mit TIMONIN_DATABASE_PASSWORD Variable:

Hier ist der geänderte Rake-Befehl:

rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'

oder:

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

für die Testumgebung.