98 votes

Fichier socket "/var/pgsql_socket/.s.PGSQL.5432" manquant dans Mountain Lion (OS X Server)

Je viens de mettre à niveau mon MacMini Server de Lion Server à Mountain Lion en utilisant OS X Server. J'ai le même problème avec PostgreSQL que l'année dernière lorsque j'ai installé Lion Server pour la première fois.

Lorsque j'essaie d'exécuter n'importe quelle commande PostgreSQL en mode terminal, je reçois le fameux message d'erreur suivant, que beaucoup ont reçu au fil des ans :

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'essayais de changer le mot de passe de _postgres quand j'ai eu cette erreur. J'ai essayé plusieurs commandes mais j'ai obtenu la même erreur. Je viens de redémarrer mon serveur, mais sans succès. Je me suis connecté en tant que Root pour consulter le dossier /var/pgsql_socket et celui-ci est vide. Le dossier /var/pgsql_socket_alt est également vide.

J'ai fait des recherches en ligne à ce sujet. Cependant, presque toutes les solutions que j'ai lues, y compris sur Stack Overflow, suggèrent de supprimer et de réinstaller PostgreSQL. Je ne sais pas mais cela ne semble pas être une option plausible car plusieurs options de l'application serveur utilisent PostgreSQL. J'ai contacté le service d'assistance aux entreprises d'Apple (sans accord) et on m'a dit que mon problème devrait être résolu par les développeurs, ce qui coûterait 695 $.

J'ai un site web qui est en panne en ce moment parce que je ne peux pas le reconstruire. Je ne sais pas vers qui me tourner pour obtenir de l'aide à ce sujet. Je vais continuer à chercher en ligne pour voir si je peux trouver quelque chose. Cependant, j'espère que quelqu'un pourra me donner une réponse rapidement afin que je puisse reconstruire ma base de données.

Mise à jour : 13/12/2012 15:33 GMT-6

Voici mon résultat pour ps auwx|grep postg :

_postgres      28123   0.0  0.1  2479696   7724   ??  Ss    3:01PM   0:00.04 /Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D /Library/Server/PostgreSQL For Server Services/Data -c listen_addresses= -c log_connections=on -c log_directory=/Library/Logs/PostgreSQL -c log_filename=PostgreSQL_Server_Services.log -c log_line_prefix=%t  -c log_lock_waits=on -c log_statement=ddl -c logging_collector=on -c unix_socket_directory=/Library/Server/PostgreSQL For Server Services/Socket -c unix_socket_group=_postgres -c unix_socket_permissions=0770
server1        28216   0.0  0.0  2432768    620 s000  R+    3:02PM   0:00.00 grep postg
_postgres      28138   0.0  0.0  2439388    752   ??  Ss    3:01PM   0:00.01 postgres: stats collector process                           
_postgres      28137   0.0  0.0  2479828   1968   ??  Ss    3:01PM   0:00.00 postgres: autovacuum launcher process                           
_postgres      28136   0.0  0.0  2479696    544   ??  Ss    3:01PM   0:00.00 postgres: wal writer process                           
_postgres      28135   0.0  0.0  2479696    732   ??  Ss    3:01PM   0:00.01 postgres: writer process                           
_postgres      28134   0.0  0.0  2479696    592   ??  Ss    3:01PM   0:00.00 postgres: checkpointer process                           
_postgres      28131   0.0  0.0  2439388    368   ??  Ss    3:01PM   0:00.00 postgres: logger process 

Mise à jour : 13/12/2012 18:10 GMT-6

Après d'intenses recherches sur le web, j'ai trouvé cette vidéo. J'ai réussi à faire fonctionner PostgreSQL et à supprimer l'erreur. Je suis capable de me connecter en utilisant pgadmin et phppgadmin. J'étais sur le point de revenir au serveur Lion par pure frustration. Maintenant, je n'aurai pas à le faire.

http://www.youtube.com/watch?v=y1c7WFMMkZ4

23 votes

Votre problème se résume au fait que la version préinstallée de PostgreSQL pour Mac OS X ne permet pas d'accéder à la base de données. psql est sur votre PATH avant la version que vous avez installée. Ils recherchent le socket unix à différents endroits. Soit vous utilisez tcp/ip en spécifiant -h localhost ou, de préférence, réparer votre PATH donc la bonne psql est trouvé en premier. La décision bizarre d'Apple de ne pas se contenter d'intégrer PostgreSQL, mais de le modifier de manière à placer des éléments à des endroits non standard est la cause première de ce problème.

3 votes

Il y a un problème en cours dans OSX, où les empaqueteurs ont décidé de mettre le socket unix-domain à un endroit différent de la normale. Laissez-moi chercher ... BRB ... stackoverflow.com/a/8482546/905902

0 votes

J'ai copié un ancien PATH dans .bashrc. Je n'ai pas installé une autre version de postgreSQL. Voici ma déclaration PATH qui inclut le code pour RVM. Si quelqu'un peut me dire en quoi le changer, je le ferai. Lorsque je fais psql, il est trouvé dans /usr/bin/psql. Merci beaucoup à vous tous pour votre aide. PATH="$PATH:$HOME/.rvm/bin:/usr/bin/psql:/usr/local:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" Je recherche également le fichier socket en me connectant en tant que Root.

306voto

mmasters Points 1811

J'ai pu ajouter ce qui suit à mon .bash_profile pour éviter l'erreur :

export PGHOST=localhost

Cela fonctionne parce que :

Si vous omettez le nom d'hôte, psql se connectera via un socket de domaine Unix à un serveur sur l'hôte local, ou via TCP/IP à localhost sur les machines qui n'ont pas de sockets de domaine Unix.

Votre système d'exploitation prend en charge les sockets de domaine Unix, mais la socket Unix de PostgreSQL qui psql n'existe pas ou se trouve à un endroit différent de celui auquel il s'attend.

En spécifiant un nom d'hôte explicitement comme localhost forces psql pour utiliser TCP/IP. Définition d'une variable d'environnement PGHOST est l'un des moyens d'y parvenir. Elle est documentée dans Manuel de psql .

37 votes

Pour tous ceux qui rencontrent ce problème avec une application Rails, vous pouvez spécifier l'hôte dans database.yml.

12 votes

Quel genre de sorcellerie est-ce là ? Je veux dire, sérieusement. Tu peux m'expliquer ?

0 votes

Dans la coquille du poisson set -x PGHOST $PGHOST "localhost"

41voto

Bryan Algutria Points 11

Essayez de coller dans la console ceci :

$ mkdir /var/pgsql_socket/ 

$ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

0 votes

Finalement, j'ai obtenu cette réponse.

0 votes

Bien. Même si je pense savoir pourquoi ça marche, un peu plus d'explications serait utile. Cette solution est meilleure que la réponse acceptée, seuls les détails manquent.

23voto

NickWoodhams Points 1746

J'ai pu résoudre le problème en remplissant simplement 127.0.0.1 pour l'adresse de l'hôte PostgreSQL au lieu de la laisser vide. (Exemple Django)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'database_name',
        'USER': 'database_user',
        'PASSWORD': 'pass',
        'HOST': '127.0.0.1',
        'PORT': '',
        }
}

1 votes

Je me sens un peu bête maintenant, j'essaie de résoudre ce problème depuis environ 2 jours. Sous Windows, j'utilisais '127.0.0.1', mais j'ai ensuite déplacé mon code en production (Debian 7) et j'ai dû le changer en ''. C'est assez bizarre qu'ils donnent un tel message d'erreur qui laisse penser que le problème pourrait être ailleurs.

4voto

Hunter Points 274

Pouvez-vous vérifier votre fichier postgresql.conf ?

Sur quel port votre postgres tourne-t-il ?

Je pense qu'il ne fonctionne pas sur le port 5432, sinon changez-le pour 5432.

OR sur l'utilisation des terminaux

psql -U  postgres -p YOUR_PORT_NUMBER database_name

1 votes

Je ne peux pas exécuter la commande du terminal. J'obtiens la même erreur. J'ai besoin d'aide pour savoir où trouver le fichier postgresql.conf. J'avais l'habitude d'avoir un dossier /var/pgsql lorsque j'exécutais Lion Server. Je suppose qu'il a disparu. Je viens de poster mon résultat pour la commande ps grep. J'ai activé le service Wiki afin d'exécuter PostgreSQL. On m'a dit que je pouvais utiliser les commandes sudo serveradmin sans activer aucun service de l'application Server, mais elles ne fonctionnent pas. Je suis connecté en tant que Root pour le moment, donc je devrais pouvoir faire n'importe quoi :) J'ai vérifié les ports dans Network Utility. 5432 non utilisé.

0voto

LightBe Corp Points 848

Cela m'a pris un certain temps mais j'ai réussi à le faire fonctionner après avoir suivi les suggestions proposées et effectué des recherches supplémentaires sur Internet. J'ai utilisé les informations contenues dans la vidéo YouTube suivante, créée par Mactasia :

http://www.youtube.com/watch?v=y1c7WFMMkZ4

Lorsque j'ai fait cela, j'ai vu le fichier avec l'extension .lock. Cependant, j'ai toujours l'erreur lorsque j'ai essayé de démarrer le serveur Rails lorsque j'ai recommencé à travailler sur mon application Rails utilisant PostgreSQL. Cette fois, j'ai obtenu une erreur de permission refusée. C'est alors que je me suis souvenu que je devais non seulement changer listen_addresses dans le plist mais aussi changer unit_socket_permissions à 0777. Je me suis également connecté en tant que Root pour modifier les permissions du dossier var/pgsql_socket afin de pouvoir y accéder au niveau de l'utilisateur. Postgres fonctionne bien maintenant. Je suis en train de recharger mes données à partir de ma sauvegarde SQL.

Ce que je n'ai pas compris, c'est que lorsque j'ai activé wiki, PostgreSQL était censé fonctionner lorsque j'ai fait un sudo serveradmin fullstatus postgres mais j'ai toujours l'erreur. Mais bon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X