sql >> Databasteknik >  >> RDS >> PostgreSQL

FATAL:rollroten finns inte

Du kan ansluta till Postgres server med explicit (my OS-användarnamn) eller implicit (timonin dvs roll i database.yml ) logga in.

Som jag ser din database.yml har användarnamn, men endast för produktion miljö. Att köra raketester utan att specificera Rails-miljö kommer att köra dem mot utveckling miljö som standard. Det är därför du har ett fel som FATAL: role "my" does not exist .

Så beroende på dina behov måste du lägga till dessa uttalanden till alla databasers definitioner (test och development likaså):

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

Efter det kommer din Rails-applikation att ansluta som timonin användare.

Den fullständiga checklistan är följande:

  • Skapa roll

Här är 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';
  • Ta bort kommentarer eller lägg till påståenden username: timonin och password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %> till filen database.yml
  • Kör alla operationer med TIMONIN_DATABASE_PASSWORD variabel:

Här är ändrat rake-kommando:

rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'

eller:

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

för testmiljö.



  1. Det går inte att ladda ner binär fil i PHP

  2. Hur man hämtar tabelllistan i databasen i Laravel 5.1

  3. Spring Boot REST · @Constraint för radering?

  4. Begränsa antalet poster i en modell som kan ha ett värde per användare