PostgreSQL ne fonctionne pas sur Mac


56

L'erreur dans son intégralité se lit comme suit:

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

C’est la deuxième fois que je configure Postgresql via Homebrew sur mon Mac et je n’ai aucune idée de ce qui se passe. Auparavant, cela fonctionnait. À un moment donné, j'ai dû entrer une commande qui a tout gâché. Je ne suis pas sûr. Maintenant, chaque fois que j'entre une commande SQL à partir de la ligne de commande, je reçois le message ci-dessus. J'ai exécuté une commande pour vérifier si le serveur est en cours d'exécution, mais ce n'est apparemment pas le cas. Si je tente de démarrer le serveur en utilisant

$ postgres -D / usr / local / pgsql / data

Je reçois l'erreur suivante:

postgres ne peut pas accéder au fichier de configuration du serveur "/usr/local/pgsql/data/postgresql.conf": aucun fichier ou répertoire de ce type

J'ai désinstallé et réinstallé Postgresql via Homebrew, mais le problème persiste. Je ne sais vraiment pas comment faire fonctionner cela. Toute aide serait appréciée.

Réponses:


53

Le problème peut également être attribué à un processus bloqué qui a laissé le postmaster.pidfichier derrière.

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql

4
Sur MacOSX, cette réponse m'a sauvé. A eu la même erreur que OP après le redémarrage de mon ordinateur. Les brew servicescommandes n'étaient pas utiles car elles donnaient l'impression que tout fonctionnait correctement. Enlever le, postmaster.pidc'est ce qui a finalement tout remis en marche. Merci!
vinhboy

1
Cela m'est arrivé aussi. Un crash brutal de Mac OS X a provoqué un redémarrage, après que Postgres ne soit pas apparu. Les services de brassage démarrer / arrêter / redémarrer ne fonctionnent pas, vous devez supprimer manuellement le fichier pid.
Matthijs

La méthode recommandée consiste à exécuter Postgres dans un conteneur de menu fixe, bien sûr. Très facile à démarrer et tout est nettoyé lorsqu'un conteneur est fermé. Je dirais que lancer une application tierce dans un conteneur Docker devrait être de facto de nos jours.
demisx

43

La réponse est ici .

Exécutez cette commande pour démarrer manuellement le serveur:

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

14

Je devenais pareil

Is the server running locally and accepting connections on Unix domain 
socket "/tmp/.s.PGSQL.5432"?

boucle de Homebrew installer / démarrer / arrêter / redémarrer en vain ...

Enfin, a brew postgresql-upgrade-databasetravaillé.

On dirait que j'étais sur 9.6 au lieu de 10.4, et quelque chose que mon dernier redémarrage de l'App Store a redémarré sur tous mes serveurs de base de données ...


cela a fonctionné pour moi
davideghz

C'est brew postgresql-upgrade-databasece qui me manquait. Merci d'avoir fait remarquer cela.
Corin

Travaillé pour moi merci!
Erwin Rooijakkers

J'ai essayé toutes les solutions. Mais c'est le seul qui a fonctionné pour moi. Il serait bon de savoir si quelqu'un pourrait expliquer pourquoi cela le corrige complètement.
JohnnyQ

11

Je viens de résoudre le même problème. C'est juste parce que j'ai oublié de l' exécuter correctement avant de l'utiliser.

Pour une installation pure postgresql sous Mac OS, le processus sera (en utilisant la commande brew ):

brew install postgresql

alors si vous voulez exécuter automatiquement postgresqlà la connexion:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

ou bien vous voulez juste l'exécuter quand vous le voulez:

postgres -D /usr/local/var/postgres

Si votre cas est plus compliqué, reprenons brew uninstall postgresqlces étapes.

J'espère que ça aide!


1
Mise à jour: pour les postgres installés par Homebrew, il brew services start postgresqlest désormais préférable de démarrer postgres au moment de la connexion
henry

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

J'ai continué à avoir l'erreur ci-dessus et aucune des solutions ci-dessus n'a fonctionné pour moi. Enfin, la solution suivante a résolu mon problème sous Mac OS X

Installez le postgres en utilisant une infusion

brew install postgres

Installer des services de brassage

brew tap homebrew/services

Pour démarrer postgres en tant que service d'arrière-plan

brew services start postgresql

Pour arrêter postgres manuellement

brew services stop postgresql

Nous pouvons également utiliser les services de brassage pour redémarrer Postgres

brew services restart postgresql

2

Cela se produit lorsque le serveur postgres n'est pas en cours d'exécution. Étapes pour installer correctement Postgres via Homebrew sur MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Ceci initialise postgres pour utiliser le répertoire donné comme répertoire de base de données. Normalement, il n'est pas conseillé d'utiliser l'annuaire d'utilisateurs pour le stockage de la base de données. Editez le fichier sudoers pour ajouter initdb et des commandes similaires, puis exécutez initdb sur / usr / local / var / postgres]

  3. pg_ctl -D /Users/<username>/db -l logfile start [Après avoir réussi à l'étape 2, vous serez invité à exécuter l'étape 3. Cette commande démarre manuellement le serveur.]


2

Cela a fonctionné pour moi. Modifiez votre répertoire postgresql en fonction de la version de votre système.

Chemin commun rm /usr/local/var/postgres/postmaster.pid

mais pour postgresql@9.6 dans mon chemin système est rm /usr/local/var/postgresql@9.6/postmaster.pid

redémarrer postgresql@9.6- brew services restart postgresql@9.6


yup thats celui qui fonctionne!
PirateApp

1

Je viens de commenter dans /etc/postgresql/9.5/main/postgresql.conf

unix_socket_permissions = 0777

et redémarrez postgres. Et pour moi ça marche.


1

récemment, je suis passé par un problème similaire. il y a juste un autre problème et une solution. J'utilisais 2 versions de postgres (9.3 et 9.6) alors que le serveur était configuré pour fonctionner sur 2 ports différents, mais certains comment la commande psql sur bash tente de se connecter au port par défaut 5432. Assurez-vous de vérifier si votre serveur est en cours d'exécution et vérifiez vos paramètres de port, puis exécutez psql -p <port> postgres. La solution change de port.


1

Je cherchais depuis longtemps et c'était la solution la plus propre et la plus soignée:

J'ai récemment mis à niveau Postgres de la version 9.2 à la version 9.3 à l'aide de Postgres Upgrade. Le processus était lisse et pg_upgrade est un outil très pratique.

Cependant, des problèmes sont survenus une fois que j'ai essayé d'exécuter les spécifications nécessaires pour se connecter à Postgres. Même si Postgres courait définitivement, soudainement je devenais:

Impossible de se connecter au serveur: Aucun fichier ou répertoire de ce type (PG :: ConnectionBad) Le serveur ne s'exécute pas localement et n'accepte les connexions que sur le socket de domaine Unix "/var/pgsql_socket/.s.PGSQL.5432"? Le problème était que la nouvelle version de Postgres écoutait plutôt /tmp/.s.PGSQL.5432. J'aurais pu déconner avec la configuration et obliger Postgres à utiliser le socket de domaine qu'il était auparavant, ou bien expliquer explicitement à Rails comment se connecter, mais ces deux approches semblaient être du travail que je n'aurais pas dû faire. À aucun moment, je n'avais dit à Rails de se connecter à Postgres sur ce chemin, Rails l'avait supposé, et maintenant ses hypothèses étaient fausses.

La solution est simple, même si un peu surprenante. Lorsque vous installez la gemme "pg", elle détecte la version de Postgres installée et définit correctement le chemin d'accès au socket du domaine. La solution est aussi simple que de réinstaller la gemme. $ gem uninstall pg $ cd my-rails-app/ $ bundle install

http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/


1
Veuillez modifier votre réponse afin qu'elle soit utile si le lien cesse de fonctionner . Vous trouverez des conseils sur la manière de procéder correctement dans la section Comment référencer des éléments écrits par d'autres . Je vous remercie.
Paul White

0

le mettre à jour en utilisant la commande

  brew postgresql-upgrade-database

si vous avez l'erreur suivante, la commande 'brew' est introuvable, mais peut être installée avec: sudo apt install linuxbrew-wrapper

puis installez-le en utilisant la commande

 sudo apt install linuxbrew-wrapper

0

Pour moi, cela s'est également produit après un redémarrage et aucune des solutions ci-dessus n'a fonctionné pour moi. Après avoir vérifié le journal du serveur comme ceci:

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

J'ai remarqué:

    2019-11-06 11:04:31.797 CET [85029] FATAL:  data directory "/usr/local/var/postgres" has invalid permissions
2019-11-06 11:04:31.797 CET [85029] DETAIL:  Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).

J'ai donc changé les permissions comme ceci:

sudo chmod 700  /usr/local/var/postgres

et tout a encore fonctionné et la vie était belle.


-3

Les étapes ci-dessous m'aident à:

désinstaller infuser postgresql infuser installer postgresql infuser postgresql-upgrade-database

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.