web-dev-qa-db-fra.com

psql: impossible de se connecter au serveur: aucun fichier ou répertoire de ce type (Mac OS X)

Lors du redémarrage de mon Mac, j'ai reçu l'erreur redoutée Postgres:

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

La raison en est que mon macbook a complètement gelé en raison d'un problème non lié et que je devais effectuer un redémarrage brutal à l'aide du bouton d'alimentation. Après le redémarrage, je n’ai pas pu démarrer Postgres à cause de cette erreur.

172
FireDragon

AVERTISSEMENT: Si vous supprimez postmaster.pid sans vous assurer qu'il n'y a vraiment aucun processus postgres qui vous exécute, cela pourrait corrompre de manière permanente votre base de données . (PostgreSQL devrait le supprimer automatiquement si le postmaster est sorti.).

SOLUTION: Cela a résolu le problème - j'ai supprimé ce fichier et tout a fonctionné!

/usr/local/var/postgres/postmaster.pid

-

et voici comment j'ai compris pourquoi cela devait être supprimé. 

  1. J'ai utilisé la commande suivante pour voir si des processus PG étaient en cours d'exécution. pour moi il n'y en avait pas, je ne pouvais même pas démarrer le serveur PG:

    ps auxw | grep post
    
  2. J'ai cherché le fichier .s.PGSQL.5432 qui était dans le message d'erreur ci-dessus. J'ai utilisé la commande suivante:

    Sudo find / -name .s.PGSQL.5432 -ls
    

    cela ne montrait rien après avoir fouillé tout mon ordinateur, le fichier n'existait donc pas, mais il était évident que psql "le voulait" ou "pensait que c'était là".

  3. J'ai jeté un coup d'oeil aux journaux de mon serveur et j'ai vu l'erreur suivante:

    cat /usr/local/var/postgres/server.log
    

    à la fin du journal du serveur, l'erreur suivante apparaît:

    FATAL:  pre-existing shared memory block (key 5432001, ID 65538) is still in use
    HINT:  If you're sure there are no old server processes still running, remove the shared memory block or just delete the file "postmaster.pid".
    
  4. En suivant les conseils du message d'erreur, j'ai supprimé le fichier postmaster.pid dans le même répertoire que server.log. Cela a résolu le problème et j'ai pu redémarrer.

Ainsi, il semble que le blocage de mon macbook et mon redémarrage brutal aient amené Postgres à penser que ses processus étaient toujours en cours d'exécution même après le redémarrage. Suppression de ce fichier résolu. J'espère que cela aide les autres! Beaucoup de gens ont des problèmes similaires, mais la plupart des réponses concernaient les autorisations de fichiers, alors que dans mon cas, les choses étaient différentes.

319
FireDragon

Aucun de ce qui précède n'a fonctionné pour moi. J'ai dû réinstaller Postgres de la manière suivante:

  • Désinstallez postgresql avec brew: brew uninstall postgresql
  • brew doctor (réparer ce qui est ici)
  • brew cleanup
  • Supprimez tous les dossiers Postgres: 

    • rm -r /usr/local/var/postgres
    • rm -r /Users/<username>/Library/Application\ Support/Postgres
  • Réinstallez Postgresql avec brew: brew install postgresql

  • Serveur de démarrage: brew services start postgresql
  • Vous devriez maintenant avoir à créer vos bases de données ... (createdb)
83
ypicard

Si vous êtes sur macOS et avez installé postgres via homebrew, essayez de le redémarrer avec 

brew services restart postgresql

Si vous êtes sur Ubuntu, vous pouvez le redémarrer avec l'une de ces commandes. 

Sudo service postgresql restart

Sudo /etc/init.d/postgresql restart
68
Jagdish Barabari

Cela n’est peut-être pas lié, mais une erreur similaire apparaît lorsque vous mettez à niveau postgre vers une version majeure à l'aide de brew; en utilisant brew info postgresql a découvert ceci qui a aidé:

To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database
8
Crazy Barney

si votre postmaster.pid est parti et que vous ne pouvez pas redémarrer ou quoi que ce soit, procédez comme suit:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

comme expliqué ici initialement

8
Antoine

Ce problema a beaucoup de sources, et donc beaucoup de réponses. J'ai vécu chacune d'elles.

1) Si vous rencontrez un problème, il est probablement nécessaire de supprimer le fichier /usr/local/var/postgres/postmaster.pid, car postgres n’a peut-être pas été géré correctement. Mais assurez-vous qu'aucun processus n'est en cours d'exécution.

2) Craig Ringer a souligné dans d'autres publications que le regroupement de postgreSQL d'Apple entraînait des problèmes d'installation de pg gem La définition de la variable d'environnement PATH est une solution.

3) Une autre solution consiste à désinstaller et réinstaller la gemme. Une mise à jour de l'infusion peut également être nécessaire.

Si vous tombez sur ce post, si vous pouvez localiser une des sources, vous gagnerez du temps ...

7
Jerome

Bonjour le monde :)
La meilleure façon, mais étrange pour moi était de faire les choses suivantes.

1) Télécharger postgres93.app ou une autre version. Ajoutez cette application dans le dossier/Applications /.

2) Ajoutez une ligne (commande) dans le fichier .bash_profile (qui se trouve dans mon répertoire personnel):

export PATH =/Applications/Postgres93.app/Contenu/MacOS/bin /: $ PATH
C'est un PATH pour psql à partir de Postgres93.app. La ligne (commande) s'exécute à chaque démarrage de la console.

3) Lancez Postgres93.app à partir du dossier /Applications/. Il démarre un serveur local (le port est "5432" et l'hôte est "localhost").

4) Après toutes ces manipulations, j’ai été heureux d’exécuter $ createuser -SRDP user_name et d’autres commandes et de voir que cela fonctionnait! Postgres93.app peut être exécuté pour s'exécuter à chaque démarrage de votre système.

5) Aussi, si vous voulez voir vos bases de données graphiquement, vous devez installer PG Commander.app. C'est un bon moyen de voir votre base de données postgres sous forme de jolies tables de données

Bien sûr, cela n’est utile que pour le serveur local. Je serai heureux si ces instructions aident les autres qui ont fait face à ce problème.

7
crazzyaka

Pour moi, la solution était simplement de redémarrer mon ordinateur. J'ai d'abord essayé de redémarrer avec les services Brew et lorsque cela ne fonctionnait pas, le redémarrage semblait être la prochaine meilleure option à essayer avant de rechercher certaines des solutions les plus complexes. Tout a fonctionné comme il se doit après. 

5
Matt Lemieux

Je faisais face à un problème similaire ici, j'ai résolu ce problème comme ci-dessous.

En réalité, le processus postgres est mort, pour voir le statut de postgres, exécutez la commande suivante 

Sudo /etc/init.d/postgres status

Il va dire que le processus est mort, il suffit de démarrer le processus

Sudo /etc/init.d/postgres start
4
Jagdish Barabari

Cela m'est arrivé après que mon Mac (High Sierra) se soit gelé et que je sois obligé de le redémarrer manuellement (maintenez le bouton d'alimentation enfoncé). Tout ce que je devais faire pour résoudre ce problème était de faire un redémarrage propre.

3
skwidbreth

Mon problème était que j'utilisais Gas Mask (un gestionnaire de fichiers hosts pour Mac) et que je n'avais pas d'entrée pour localhost dans le fichier hosts que j'utilisais.

J'ai ajouté:

127.0.0.1 localhost

Et cela a résolu mon problème.

3
jawns317

Les causes de cette erreur sont nombreuses, il est donc important de localiser d'abord votre fichier journal et de le rechercher. Ce peut être à /usr/local/var/log/postgres.log ou /usr/local/var/postgres/server.log ou éventuellement ailleurs. Si vous avez installé avec Homebrew, vous pouvez trouver l'emplacement dans ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

1
Tamlyn

J'ai eu le même problème ... La plupart du temps, le problème est le fait qu'il reste un fichier

/usr/local/var/postgres/postmaster.pid

ce qui fonctionne pour la plupart des gens, mais mon cas était différent - j'ai essayé de googler ce problème pendant les 3 dernières heures, j'ai désinstallé postresql sur OSX via brew, purgé la base de données, rien n'a fonctionné.

Enfin, j’ai remarqué que j’avais un problème avec brew: chaque fois que j’essayais d’installer quoi que ce soit, cela se produisait:

Error: Permission denied @ rb_sysopen - /private/tmp/github_api_....

ou quelque chose comme ça à la fin d'une installation.

J'ai simplement fait Sudo chmod -R 777 /private/tmp et ça marche enfin!

J'écris ceci parce que cela pourrait être une solution pour quelqu'un d'autre

1
Maciej Pk

Après quelques recherches, trouvé un problème similaire et une réponse simple pour moi:

brew postgresql-upgrade-database

Merci à la réponse de ssamateh à ce sujet sur sujet connexe

1
OBrooks

Allez à /var/log/ et exécutez cat postgres.log ici vous trouverez la raison de l'échec de postgres. S'il s'agit d'une fermeture intelligente, votre version de icu4c (bibliothèque C++ pour Unicode) n'est probablement pas correcte et est liée à postgres. Alors exécutez les commandes suivantes.

brew upgradebrew cleanup Cela devrait fonctionner;)

0
shishir bondre

Je viens de recevoir le même problème que j'ai mis ma machine (ubuntu) pour la mise à jour et obtenu erreur ci-dessous:

impossible de se connecter au serveur: Aucun fichier ou répertoire de ce type n'est le serveur s'exécuter localement et accepter les connexions sur le socket de domaine Unix "/var/run/postgresql/.s.PGSQL.5432"?

Après avoir terminé le processus de mise à jour lorsque je redémarre mon erreur système parti. Et son travail est comme charmant comme avant .. Je suppose que cela s’est passé alors que pg se mettait à jour et un autre processus avait commencé. 

0
Gagan Gami

Je ne suis pas tout à fait sûr de savoir pourquoi, mais mon installation de Postgres a été un peu foutue et certains fichiers ont été supprimés, ce qui a entraîné le message d'erreur OP. 

Malgré le fait que je puisse exécuter des commandes telles que brew service retart postgres et voir les messages appropriés, cette erreur persistait. 

J'ai parcouru la documentation postgres et découvert que mon fichier /usr/local/var/postgres était totalement vide. Alors j'ai couru ce qui suit: 

initdb /usr/local/var/postgres

Il semble que certaines configurations ont eu lieu avec cette commande. 

Ensuite, il m'a demandé de lancer ceci:

postgres -D /usr/local/var/postgres

Et cela m'a dit qu'un fichier postmaster.pid existe déjà. 

J'avais juste besoin de savoir si Brew serait capable de récupérer les configs que je viens de lancer, alors je l'ai testé. 

ls /usr/local/var/postgres

Cela m'a montré un fichier postmaster.pid. J'ai ensuite fait brew services stop postgresql et le fichier postmaster.pid a disparu. Ensuite, j'ai fait brew services start postgresql et VIOLA, le fichier est réapparu. 

Ensuite, j'ai lancé mon application, qui a effectivement trouvé le serveur, mais mes bases de données semblent avoir disparu. 

Bien que je sache qu'ils peuvent ne pas être partis du tout - la nouvelle initialisation que j'ai faite a peut-être créé une nouvelle base de données, et l'ancienne n'est pas pointée. Il faudrait que je regarde où cela se trouve et le redirige ou tout simplement créer mes bases de données à nouveau. 

J'espère que cela t'aides! Lire les documents postgres m'a beaucoup aidé. Je déteste lire des réponses qui sont comme "Collez ceci dans ça marche!" parce que je ne sais pas ce qui se passe et pourquoi. 

0
Nick Res

J'ai dû regarder ce post plusieurs fois pour résoudre ce problème. Il existe un autre correctif, qui s'applique également à des problèmes similaires avec d'autres programmes en cours d'exécution.

Je viens de découvrir que vous pouvez utiliser les deux commandes suivantes. 

$ top 

Cela montrera toutes les actions en cours avec leurs numéros de pid. Quand vous trouvez postgres et le pid associé 

$ kill pid_number

0
cohart

La réponse de @Jagdish Barabari m'a donné l'indice dont j'avais besoin pour résoudre ce problème. Il s'avère que deux versions de postgresql ont été installées alors qu'une seule était en cours d'exécution. La purge de tous les fichiers postgresql et la réinstallation de la dernière version ont résolu ce problème.

0
5280Angel

J'ai supprimé/usr/lib de LD_LIBRARY_PATH et cela a fonctionné. Je travaillais dans dockerfile postgres: Alpine.

0
ddtraveller