web-dev-qa-db-fra.com

Postgres.app n'a pas pu démarrer sur le port 5432

J'utilise http://postgresapp.com . Dans la barre de menu, l'erreur "Impossible de démarrer sur le port 5432". De même, si j'essaie de démarrer le serveur à partir du terminal, je reçois:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

J'ai également exécuté pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start.__ et obtenu le server starting de sortie, mais les mêmes erreurs se sont toujours produites lors de la connexion à psql.

32
Chris

Vous avez une autre instance de postgres en cours d'exécution, c'est la seule application intéressée par ce port. Vous devez utiliser netstat et ps pour le déterminer. Arrêtez ensuite l'instance et désinstallez-la, vous avez peut-être installé enterpiseDb par exemple, c'est ce que j'ai fait.

12
Paul McLachlan

Si vous exécutez votre serveur sur une machine macOS et que vous avez installé Postgres via Homebrew, vous pouvez arrêter l'instance actuelle comme ceci:

services de brassage arrêt postgresql

Cliquez ensuite sur l’éléphant dans la barre de menus et il devrait démarrer correctement.

34
Max von Hippel

Je viens d'avoir ce problème précis. Lorsque j'ai exécuté which psql, il pointait sur les outils client Postgres installés avec Lion:

/usr/bin/psql

Utilisation d'un indice de Frank Wiles J'ai exécuté ps auxw | grep post pour confirmer que postgres était en cours d'exécution et qu'il s'exécutait sur le port de droite, ce qui m'a également montré le chemin postgres.app:

/Applications/Postgres.app/Contents/MacOS/bin/postgres

J'ai donc édité par .bash_profile pour exporter ce répertoire. Au premier effort je l'ai ajouté à la fin du chemin. Quand j’ai exécuté echo $PATH, j’ai pu voir que usr/bin était la première chose dans le chemin, et which psql donnait toujours le chemin /usr/bin. À ce moment, un ami m'a guidé dans la bonne direction:

export PATH="/Applications/Postgres.app/Contents/MacOS/bin:${PATH}"

Démarrez une nouvelle fenêtre de terminal, puis exécutez which psql - il devrait pointer sur l’emplacement postgres.app et psql lancer le shell postgres. Fonctionne bien maintenant.

21
eezis

Vous pouvez arrêter le processus en trouvant le PID avec 

lsof -i :5432

et puis le tuer avec 

kill -9 <PID>
14
Некто

Si vous avez installé Postgres via une autre méthode (par exemple, sur www.postgresql.org) et que son démarrage est automatique au démarrage, vous pouvez empêcher ce dernier de démarrer via les éléments suivants:

Sudo launchctl unload /Library/LaunchDaemons/com.edb.launchd.postgresql-X.X.plist  
Sudo rm -f /Library/LaunchDaemons/com.edb.launchd.postgresql-X.X.plist  

TIP: utilisez tab pour compléter automatiquement la section com.edu.launchd afin de déterminer la version en cours de chargement.

Redémarrez Postgres.app et vous devriez être prêt à partir.

(from http://forums.enterprisedb.com/posts/list/1831.page;jsessionid=70621DC48C99EDE663A6A594B05F1A02#6782 )

14
Jamon Holmgren

J'ai essayé à peu près toutes les solutions à ce problème. Pour moi, cela se produit toujours lorsque la batterie de mon MacBook s'épuise, même si l'ordinateur est déjà en veille. Je cherchais dans ~/Library/Application\ Support/Postgres/var-9.4 et j'ai découvert un autre fichier postmaster.pid que je n'avais jamais vu auparavant. Je l'ai supprimé et maintenant tout est à nouveau opérationnel! J'utilise la version Postgres.app, pas la version brassée. 

Les étapes que j'ai prises:

  1. Assurez-vous que postgres.app n'est pas en cours d'exécution.
  2. Exécuter rm ~/Library/Application\ Support/Postgres/var-9.$X/postmaster.pid
  3. Si vous n'avez pas de répertoire var-9.$X, lancez simplement rm ~/Library/Application\ Support/Postgres/postmaster.pid
  4. Redémarrer postgres.app
  5. Revenez à développer des trucs cool.
14
Daniel Bonnell

Il peut également arriver que le PID soit pris… .. Cela m’est arrivé lorsque l’ordinateur a subi un redémarrage inattendu.

Si oui, vous devez vous rendre à:

˜/Library/Application Support/Postgres/var-9.4

Vous pouvez vérifier ce chemin dans la boîte de dialogue Préférences de Postgres.app.

Et puis, il suffit de supprimer le fichier pid

Sudo rm postmaster.pid

Et le serveur démarre tout de suite.

5
Lomefin

J'ai eu un problème similaire où je ne pouvais pas me connecter à Postgres.app alors que l'application elle-même indiquait qu'elle fonctionnait sur le port 5432. 

Je ne sais pas pourquoi, mais même quand j'ai quitté l'application et vérifié qu'aucun processus postgres ne fonctionnait avec ps -a. ces fichiers existaient:

/tmp/.s.PGSQL.5432

et

/tmp/.s.PGSQL.5432.lock

Ma solution consistait à supprimer ces fichiers, puis à redémarrer postgres.app.

5
ksnabb

En essayant d'ouvrir l'application Postgres, la même erreur concernant post 5432 (sur Mac OSX 10.10.5) s'est produite

J'ai fait: 

$ lsof -i | grep LISTEN

Saw quel PID exécutait postgres sur ce port, fait: $ killall {pid} puis $ brew uninstall postgres 

Après cela, j'ai redémarré mon Mac et lancé:

$ lsof -i | grep LISTEN encore une fois pour vous en assurer. N'a vu aucun postgres courir n'importe où et a pu ouvrir l'application Postgres sans recevoir cet avertissement. 

Puis j'ai réinstallé postgres avec $ brew install postgres

UNE AUTRE OPTION

(J'ai aussi essayé cela une fois lorsque l'approche ci-dessus ne fonctionnait pas et que je ne pouvais tuer aucun des PID) 

$ ps auxw | grep post

Vu un processus postgres, que j'ai ensuite Sudo kill <PID> 

Tout fonctionne bien maintenant. 

3

De toute évidence, quelque chose d'autre avait pris le port 5432, l'application a donc choisi de fonctionner sous 5433. 

Pourquoi ne pas simplement vous connecter à Pg sur le port 5433, si c'est là que ça fonctionne? Vous avez un fichier de socket /tmp/.s.PGSQL.5432, vous pouvez donc vous connecter avec psql -p 5433 pour les connexions de socket de domaine UNIX. Il écoutera également sur le même port que TCP/IP, vous pourrez donc utiliser psql -h localhost -p 5433 pour TCP/IP et laisser vos applications se connecter au port 5433 au lieu de 5432.

Changez votre .psqlrc pour définir le nouveau port comme port par défaut et vous pouvez oublier que ce n'est pas sur le port par défaut.

2
Craig Ringer

Le mien n'a pas démarré soudainement, et quand j'ai vérifié Console.app, j'ai vu: 

com.heroku.postgres-service: 
FATAL:  could not create shared memory segment: Cannot allocate memory
DETAIL:  Failed system call was shmget(key=5432001, size=3874816, 03600).
HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space, or exceeded your kernel's SHMALL parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMALL.  To reduce the request size (currently 3874816 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
The PostgreSQL documentation contains more information about shared memory configuration.

Il s'avère que Postgres n'a pas démarré car j'avais Wireshark (et X11) en cours d'exécution. Cela a bien fonctionné après avoir quitté Wireshark. 

Bonne chance! 

1
Colin

D'une manière ou d'une autre, j'ai totalement oublié que ce fichier de socket sera caché à cause du point. Assurez-vous d'utiliser ls -A /tmp/.s.PGSQL.5432 si vous vérifiez si le socket est réellement là.

1
David Winiecki

J'ai résolu ce problème en 

  1. Identifier ce qui fonctionnait sur le port 5432 en utilisant "netstat" dans le CL, qui était postgreSQL et non Postgres
  2. J'ai localisé le répertoire qui contenait postgreSQL, qui était root/Library/PostgreSQL
  3. Je me suis assuré qu'un des instants de l'application ne fonctionnait pas via Activity Monitor
  4. Ensuite, j'ai supprimé le dossier et redémarré! Tout était bien!
1
Vishal Sakaria

J'ai eu le même problème lorsque j'essayais d'utiliser postgresql avec Rails. Mettre à jour mon Gemfile pour utiliser la nouvelle version de gem pg résoud ce problème pour moi. (Gem pg version 0.16.0 fonctionne). Dans l'utilisation de Gemfile:

gem 'pg', '0.16.0'

puis exécutez ce qui suit pour mettre à jour la gemme

bundle install --without production
bundle update
bundle install
1
andr3wll

Cette commande est une ligne qui tue instantanément tous les processus PostgresSQL.

Sudo kill -kill $(Sudo lsof -t -i :5432)

Cela corrigeait tous mes problèmes sur Mac OSX Mojave 10.14.1.

1
Aaron Becker

J'ai eu les mêmes problèmes:

 psql: impossible de se connecter au serveur: aucun fichier ni répertoire de ce type 
 Le serveur fonctionne-t-il localement et accepte-t-il 
 connexions sur le socket de domaine Unix "/tmp/.s.PGSQL.5432"?

Dans mon cas, il s'agissait d'un fichier hôte corrompu sur mon mac. Je manquais:

 127.0.0.1 localhost 

Un moyen simple et rapide de vérifier consiste à ouvrir un terminal et à taper:

 ping localhost 

ou:

scutil -r localhost

Plus d'infos ici J'espère que ça aide.

0
Kris Utter

Un fichier nommé "postmaster.pid" (dans mon répertoire $ PGDATA) empêchait postgresql de démarrer. C'était un fichier zombie, placé il y a 10 jours et quand j'ai brutalement éteint l'ordinateur (en tirant la fiche, littéralement), aucun processus de nettoyage n'a eu l'occasion de supprimer ce fichier. 

0
Yanik Crépeau

Vous avez probablement un PostgreSQL installé, supprimé et réinstallé. PostgreSQL a généralement utilisé le port 5432 mais, s'il n'est pas disponible, il passe au prochain disponible, dans ce cas-ci 5433. Vous avez donc probablement choisi ce port lors de votre deuxième installation.

Je pense que vous devriez vérifier le fichier:

/etc/services  

et ajustez les lignes ci-dessous pour votre numéro de port prévu:

postgresql 5432/udp # de la base de données PostgreSQL

postgresql 5432/tcp # base de données PostgreSQL

Après cela, vous devez redémarrer votre ordinateur (moyen le plus simple). 

0
Sabin Chirila

Le même problème vient de m'arriver. J'avais Postgres.app 9.2.4.1 en cours d'exécution depuis un moment. Lorsque j'ai mis à jour Mac OS X vers 10.8.5, après le redémarrage obligatoire, il ne fonctionnait plus. J'ai essayé plusieurs choses, y compris la mise à jour vers la 9.2.4.3, et aucune après un autre redémarrage, cela fonctionnait.

Je devais ouvrir le fichier /Users/$USER/Library/Application Support/Postgres/var/postgresql.conf et:

  1. ligne de commentaire unix_socket_permissions = 0777
  2. décommenter et adapter la ligne unix_socket_directory = '/tmp'

Après un redémarrage, Postgres.app s’exécutait comme un charme.

0
Rmatt

Netstat, ps aux, etc ... aucun des 5432 utilisés. Vérifié/Bibliothèque. Trouvé PG9.6 ancienne installation toujours là. Did rm -rf et bang. La version 11 fonctionne bien.

0