sql >> Databáze >  >> RDS >> PostgreSQL

FATAL:Role root neexistuje

K serveru Postgres se můžete připojit pomocí explicitního (my tj. uživatelské jméno OS) nebo implicitní (timonin tj. role v database.yml ) přihlášení.

Jak vidím váš database.yml má prohlášení o uživatelském jménu, ale pouze pro produkci životní prostředí. Spuštění rake testů bez určení prostředí Rails je spustí proti vývoji prostředí ve výchozím nastavení. To je důvod, proč máte chybu jako FATAL: role "my" does not exist .

Takže v závislosti na vašich potřebách musíte tyto příkazy přidat do definic všech databází (test a development také):

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

Poté se vaše aplikace Rails připojí jako timonin uživatele.

Úplný kontrolní seznam je následující:

  • Vytvořit roli

Zde je SQL pro PostgreSQL:

CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
  NOINHERIT CREATEDB
   VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
  IS 'Timonin database role for Rails app';
  • Odkomentujte nebo přidejte prohlášení username: timonin a password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %> do souboru database.yml
  • Spustit všechny operace s TIMONIN_DATABASE_PASSWORD proměnná:

Zde je změněn příkaz rake:

rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'

nebo:

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

pro testovací prostředí.



  1. Vraťte výsledky dotazu SQL jako JSON v oracle 12c

  2. Parametrizovaný dotaz, který vrací sloupce TEXT, vždy vrací nulu u sloupců INT

  3. MySQL Error 1 (HY000) Problém s vytvářením souboru Errcode 2

  4. Oracle dotaz, aby odpovídal všem hodnotám v seznamu mezi všemi řádky v tabulce