web-dev-qa-db-fra.com

Rails + Postgres fe_sendauth: aucun mot de passe fourni

Salut, j'essaye de connecter postgresql à mon projet Rails. J'apprends les tests mais mes tests ne s'exécutent pas en raison d'une erreur postgresql concernant un mot de passe incorrect:

Edmunds-MacBook-Pro:langexchange edmundmai$ rake test:units
rake aborted!
fe_sendauth: no password supplied

J'ai déjà lu et mon fichier pg_hba.conf était à l'origine déjà comme ceci:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
Host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
Host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     edmundmai  

voici mon fichier database.yml dans mon projet Rails

default: &default
  adapter: postgresql
  encoding: utf8
  pool: 5
  username: edmundmai
  password: 

development:
  <<: *default
  database: project_development

test:
  <<: *default
  database: project_test

production:
  <<: *default
  database: project_production

Est-ce que quelqu'un sait comment je pourrais résoudre ce problème? Nous pouvons discuter si c'est plus facile.

24
bigpotato

Vous devez d'abord changer:

local   all             all                                     trust

à:

local   all             all                                     md5

Ensuite, vous devez créer un super_user dans PostgreSQL avec username et password, après cela en ajoutant username et password du nouvel utilisateur à ton database.yml fichier.

Pour créer un nouveau super_user, ouvert Pg Admin III et clic droit en bas Login Roles pour créer un nouveau super utilisateur.

10
Thanh

Assurez-vous d'avoir défini à la fois Rails_ENV et RACK_ENV sur votre serveur d'hébergement de production. J'ai eu un problème similaire où tout fonctionnait sauf rake et la solution était d'ajouter RACK_ENV = production à mon environnement. Rails_ENV était déjà mis en production.

export RACK_ENV=production

bundle exec rake db:version

Vous devriez voir une sortie telle que:

Current version: 20121126151935

Solution: assurez-vous que votre application Rails a accès aux variables d'environnement Rails_ENV et RACK_ENV. Assurez-vous également qu'elles ont toutes les deux la même valeur.

21
danielricecodes

Sur votre ordinateur local sous les sections test et development des database.yml fichier, vous devez remplacer le username par votre nom d'utilisateur connecté. Le générateur Rails le rend identique à votre nom d'application et cela ne fonctionnera pas. La section production dépendra de votre configuration de production. Si vous utilisez heroku vous n'avez pas besoin de changer rien là-bas.

4
andreofthecape

Il vous suffit de créer l'utilisateur/passw et le schéma (db) dans postgres avec pgadmin et de mettre user/passw dans database.yml. Lorsque j'ai essayé de créer une base de données avec rake db: create dans le dossier de projet actuel Rails, il a échoué, et l'erreur m'a été impossible de créer pour l'adaptateur postgreSQL. Après cela, j'ai créé le schéma pour = Rails projet avec pgadmin, tout va bien sans aucun changement dans pg_hba.conf.

0
Kras