web-dev-qa-db-fra.com

Le serveur fonctionne-t-il sur l'hôte "localhost" (:: 1) et accepte-t-il les connexions TCP/IP sur le port 5432?

Avant tout, veuillez noter que j'ai trouvé plusieurs questions similaires sur Stack Overflow et des articles sur le Web, mais aucune de celles-ci ne m'a aidé à résoudre mon problème:

Maintenant, voici le problème:

  • J'ai une application Rails qui fonctionne à merveille.
  • Avec mon collaborateur, nous utilisons GitHub pour travailler ensemble.
  • Nous avons une branche master et une branche mvp.
  • J'ai récemment mis à jour ma version git avec Homebrew (Mac).
  • Nous utilisons Foreman pour lancer notre application localement.

Maintenant, lorsque j'essaye de lancer l'application localement, j'obtiens le message d'erreur suivant:

PG::ConnectionBad at /
could not connect to server: Connection refused
    Is the server running on Host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on Host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?

J'ai essayé de redémarrer mes ordinateurs plusieurs fois.

J'ai aussi vérifié le contenu de /usr/local/var/postgres:

PG_VERSION      pg_dynshmem     pg_multixact    pg_snapshots    pg_tblspc       postgresql.conf
base            pg_hba.conf     pg_notify       pg_stat         pg_twophase     postmaster.opts
global          pg_ident.conf   pg_replslot     pg_stat_tmp     pg_xlog         server.log
pg_clog         pg_logical      pg_serial       pg_subtrans     postgresql.auto.conf

Comme vous pouvez le constater, il n’y a pas de fichier postmaster.pid.

Une idée de comment je pourrais résoudre ce problème?

23
Thibaud Clement

Vous êtes probablement à court de batterie et votre serveur postgresql ne s’est pas arrêté correctement. 

La solution la plus simple consiste à télécharger l'application officielle Postgresql et à la lancer: le serveur sera forcé à démarrer ( http://postgresapp.com/

26
Graham Slick

lancez postgres -D /usr/local/var/postgres et vous devriez voir quelque chose comme:

 FATAL:  lock file "postmaster.pid" already exists
 HINT:   Is another postmaster (PID 379) running in data directory "/usr/local/var/postgres"?

Puis lancez kill -9 PID dans HINT

Et vous devriez être prêt à partir.

40
user8376606

Probablement parce que votre système s'est arrêté de manière inattendue

Essayer

postgres -D /usr/local/var/postgres

Vous pourriez voir

FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 449) running in data directory "/usr/local/var/postgres"?

Alors essaye

kill -9 PID

exemple

kill -9 419

Et il devrait commencer normalement postgres

19
Nishant

Cela peut être aussi simple que le service postgresql est en panne. Essayez de courir:

Sudo service postgresql start

qui a résolu le problème pour moi.

11
Shiva89

Cela a fonctionné dans mon cas:

brew uninstall postgresql
rm -fr /usr/local/var/postgres/
brew install postgresql
8
Tan

Cela peut être dû au fait que le fichier pid créé pour postgress n'a pas été supprimé en raison d'un arrêt inattendu. Donc, pour résoudre ce problème, supprimez ce fichier pid.

  1. Trouvez le répertoire de données postgres. Sur un MAC utilisant homebrew, il s'agit de /usr/local/var/postgres/, d'autres systèmes, il pourrait s'agir de /usr/var/postgres/

  2. Supprimer le fichier pid

    postmaster.pid

  3. Redémarrez postgress. Sur Mac,

    services de brassage redémarrer postgresql

1
Aman Kumar

Si vous voulez redémarrer Postgresql sous Linux, vous devez utiliser la commande suivante.

/etc/init.d/postgresql restart

1
coderanger

J'ai résolu le problème via cette commande

pg_ctl -D /usr/local/var/postgres start

Parfois, vous pourriez avoir cette erreur

pg_ctl: another server might be running; trying to start server anyway

Essayez donc d’exécuter la commande suivante puis lancez la première commande donnée ci-dessus.

pg_ctl -D /usr/local/var/postgres stop
1
techdreams

Je rencontre souvent ce problème sous Windows. La façon dont j'ai résolu le problème est Service - Cliquez sur Serveur de base de données PostgreSQL 8.3 - Cliquez sur le deuxième onglet "Connexion" - choisissez la première ligne "Le compte système local".

0
管浩浩

Cela a fonctionné pour moi: Run

Sudo lsof -i :<port_number>

après cela, il affichera le PID actuellement associé au processus.

Après cela, lancez Sudo kill -9 <PID>

si cela ne fonctionne pas, essayez la solution proposée par user8376606, elle fonctionnerait certainement!

0
vonvick