PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

FATAL :la racine du rôle n'existe pas

Vous pouvez vous connecter au serveur Postgres avec explicite (my c'est-à-dire nom d'utilisateur du système d'exploitation) ou implicite (timonin c'est-à-dire rôle dans database.yml ) connexion.

Comme je vois votre database.yml a une déclaration de nom d'utilisateur, mais uniquement pour la production environnement. Exécuter des tests de rake sans spécifier l'environnement Rails les exécutera contre le développement environnement par défaut. C'est pourquoi vous avez une erreur comme FATAL: role "my" does not exist .

Donc, selon vos besoins, vous devez ajouter ces instructions à toutes les définitions de bases de données (test et development également):

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

Après cela, votre application Rails se connectera en tant que timonin utilisateur.

La liste de contrôle complète est la suivante :

  • Créer un rôle

Voici SQL pour PostgreSQL :

CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
  NOINHERIT CREATEDB
   VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
  IS 'Timonin database role for Rails app';
  • Retirez les commentaires ou ajoutez des déclarations username: timonin et password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %> à votre fichier database.yml
  • Exécuter toutes les opérations avec TIMONIN_DATABASE_PASSWORD variables :

Voici la commande de rake modifiée :

rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'

ou :

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

pour l'environnement de test.