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.
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é.
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
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à".
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".
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.
Aucun de ce qui précède n'a fonctionné pour moi. J'ai dû réinstaller Postgres de la manière suivante:
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
brew services start postgresql
createdb
)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
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
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
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 ...
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 /: $ PATHC'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.
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.
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
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.
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.
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
.
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
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
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 upgrade
brew cleanup
Cela devrait fonctionner;)
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é.
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.
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
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.
J'ai supprimé/usr/lib de LD_LIBRARY_PATH et cela a fonctionné. Je travaillais dans dockerfile postgres: Alpine.