Le rôle n’existe pas et impossible de créer une firebase database lors de l’utilisation de PostgreSQL

J’utilise Heroku pour mon application et cela nécessite PostgreSQL mais vous pouvez toujours utiliser SQLite3 pour le développement. Heroku étant fortement déconseillé d’avoir 2 bases de données différentes, j’ai décidé de passer à PostgreSQL pour le développement. J’ai installé le gem pg et suis également allé sur le site officiel de PostgreSQL pour obtenir l’installateur de Windows et j’ai également modifié mon database.yml . Au cours de l’installation, il faut un mot de passe pour PostgreSQL, donc j’en ai créé un. J’ai dû changer le fichier pg_hba.conf utilisant md5 pour avoir trust dans l’ordre: fe_sendauth: no password supplied lors de la création de la firebase database.

 # TYPE DATABASE USER ADDRESS METHOD # IPv4 local connections: host all all 127.0.0.1/32 trust # was md5 # IPv6 local connections: host all all ::1/128 trust # was md5 # Allow replication connections from localhost, by a user with the # replication privilege. #host replication postgres 127.0.0.1/32 trust #host replication postgres ::1/128 trust 

Après avoir éliminé cela, je reçois maintenant ceci:

 $ rake db:create (in C:/app) FATAL: role "User" does not exist Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"utf8", "database"=>"app_test", "pool"=>5, "username"=>nil, "password"=>nil} 

J’ai toujours mon development.sqlite3 et text.sqlite3 présents, cela pourrait-il être le problème? Que faut-il faire?

Voici mon résumé complet: https://gist.github.com/1522188

Ajoutez un nom d’utilisateur à votre database.yml , utilisez le nom de votre application (ou une variante du nom) comme nom d’utilisateur, app_name comme espace réservé:

 development: adapter: postgresql encoding: utf8 database: app_development pool: 5 username: app_name password: 

Puis créez l’utilisateur (AKA “role”) dans PostgreSQL en utilisant psql.exe :

 $ psql -d postgres postgres=# create role app_name login createdb; postgres=# \q 

La première ligne est dans votre terminal, les deux suivantes sont dans psql . Alors faites votre rake db:create .

L’ User User est peut-être un user par défaut, mais l’ user est déjà pris pour d’autres raisons dans PostgreSQL. Il vous faudra donc le citer pour conserver le cas si vous souhaitez utiliser User comme nom d’utilisateur:

 postgres=# create role "User" login createdb; 

Il est préférable de créer un utilisateur par application.

Vous voudrez également faire des choses similaires pour votre entrée de test dans database.yml .

PostgreSQL essaiera de créer la firebase database avec votre nom de compte (login) si un username n’est pas spécifié dans votre config/database.yml . Sous OS X et Linux, vous pouvez voir qui c’est avec whoami . On dirait que vous utilisez Windows.

Solution A: Créez un utilisateur PostgreSQL correspondant à celui recherché. Par exemple

 createuser --superuser some_user 

Solution B: modifiez l’utilisateur de la firebase database en définissant explicitement un nom d’ utilisateur, comme indiqué dans la réponse de mu .

Si vous avez un compte / utilisateur spécifique sur votre machine pour postgres appelé postgres par exemple.

Ensuite, l’exécution de cette commande vous invitera à saisir un nom de rôle.

 sudo -u postgres createuser --interactive 

Alors faire

 rake db:create 

Devrait marcher!