web-dev-qa-db-fra.com

Fichier de 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 vers Mountain Lion avec OS X Server. J'ai le même problème avec PostgreSQL que je l’ai fait l’année dernière, lors de la première installation de Lion Server.

Lorsque j'essaie de faire n'importe quel type de commande de terminal PostgreSQL, le message d'erreur suivant est notoire:

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 pour _postgres quand j'ai eu l'erreur. J'ai essayé plusieurs commandes mais j'ai eu la même erreur. Je viens de redémarrer mon serveur mais pas de chance. Je me suis connecté en tant que root pour consulter/var/pgsql_socket et le dossier est vide. Le dossier/var/pgsql_socket_alt est également vide.

J'ai vérifié en ligne à ce sujet. Cependant, à peu près toutes les solutions que j'ai lues, y compris Stack Overflow, suggèrent un retrait et une réinstallation de 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é Apple Enterprise Support (pas d'accord) et on m'a dit que mon problème devrait être résolu par les développeurs, qui généreraient 695 dollars.

J'ai un site Web qui est en panne parce que je ne peux pas le reconstruire. Je ne sais pas vers qui demander de l'aide pour l'instant. 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 rapide afin que je puisse reconstruire ma base de données.

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

Voici ma sortie pour ps auwwx | 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 une recherche Web intense, cette vidéo a été trouvée. J'ai pu faire fonctionner PostgreSQL et supprimer l'erreur. Je suis capable de me connecter en utilisant pgadmin et phppgadmin. J'étais sur le point de retourner sur Lion Server à cause d'une pure frustration. Maintenant, je n'aurai pas à le faire.

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

J'ai pu ajouter les éléments suivants à mon fichier .bash_profile pour éviter l'erreur:

export PGHOST=localhost

Cela fonctionne parce que :

Si vous omettez le nom de l'hôte, psql se connectera via un socket de domaine Unix à un serveur de l'hôte local ou via TCP/IP vers localhost sur des ordinateurs ne disposant pas de sockets de domaine Unix.

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

La spécification explicite d'un nom d'hôte sous la forme localhost force psql à utiliser TCP/IP. Définir une variable d'environnement PGHOST est l'un des moyens d'y parvenir. C'est documenté dans Le manuel de psql .

275
mmasters

Essayez de coller dans la console ceci: 

$ mkdir /var/pgsql_socket/ 

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

J'ai pu résoudre le problème en remplissant simplement 127.0.0.1 pour l'adresse de l'hôte PostgreSQL plutôt que de le 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': '',
        }
}
22
Nick Woodhams

Ouvrez 'postgresql.conf' dans votre éditeur préféré. Recherchez la variable 'unix_socket_directories', elle ressemblera probablement à ceci: 

unix_socket_directories = '/private/tmp/'

Changer la ligne à ceci:

unix_socket_directories = '/var/pgsql_socket/'

Notez que si vous voulez que les fichiers de socket de plusieurs répertoires soient séparés par une virgule.

10
Craig Thomas

Comme mentionné par d'autres dans les commentaires, une solution très simple à ce problème consiste à déclarer la base de données 'Host' dans la configuration de la base de données. Ajout de cette réponse juste pour le rendre un peu plus clair pour quiconque lit ceci.

Dans une application Ruby on Rails, par exemple, modifiez /config/database.yml:

development:
  adapter: postgresql
  encoding: unicode
  database: database_name
  pool: 5
  Host: localhost

Remarque: la dernière ligne ajoutée pour spécifier l'hôte. Avant de mettre à jour vers Yosemite, je n’avais jamais eu besoin de spécifier l’hôte de cette manière.

J'espère que ça aide quelqu'un.

À votre santé

7
David Battersby

Une solution beaucoup plus simple ( http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/ ). Je suis passé à Postgres 9.4. Dans mon cas, tout ce que je devais faire (après une journée passée à googler sans succès)

gem uninstall pg
gem uninstall activerecord-postgresql-adapter
bundle install

Redémarrez webrick et c'est fait!

5
Jan Gerritsen

Vérifiez le statut de la base de données:

service postgresql status

Si la base de données n'est pas en cours d'exécution, démarrez la base de données:

Sudo service postgresql start
5
Sivakumar R.J

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

Sur quel port fonctionne votre postgres ??

Je pense qu'il ne fonctionne pas sur le port 5432.Si pas le changer en 5432 

OU sur l'utilisation du terminal

psql -U  postgres -p YOUR_PORT_NUMBER database_name
4
Hunter

J'ai eu ce problème avec Django. 

Résolvez-le en définissant explicitement votre nom d'hôte sur "localhost".

2
Ashwin Balamohan

je crée Word en faisant ceci:

dpkg-reconfigure locales

et choisissez vos lieux préférés

pg_createcluster 9.5 main --start

(9.5 est ma version de postgresql)

/etc/init.d/postgresql start

et puis c'est Word!

Sudo su - postgres
psql
2
mymusise
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

Installer 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
1
Sudharshan

Si vous rencontrez le problème ci-dessus mais que vous avez mis à niveau à partir de Yosemite, une approche différente est nécessaire car la solution de mise à niveau peut détruire certains fichiers. Plus de détails sont sur `pg_tblspc` est manquant après l'installation de la dernière version de OS X (Yosemite ou El Capitan) .

1
Obromios

vérifie que le serveur postgres est en cours d'exécution avec le code suivant

Sudo service postgresql status

si le serveur postgres est inactif, écrivez la commande suivante.

Sudo service postgresql start
1
wailinux
apt-get install postgres-xc-client
apt-get install postgres-xc
1
angela

Commencez par supprimer le postgres installé:

Sudo apt-get purge postgr*
Sudo apt-get autoremove

Puis installez 'synaptic':

Sudo apt-get install synaptic
Sudo apt-get update

Puis installez Postgres

Sudo apt-get install postgresql postgresql-contrib
0
Gurudath BN

Je viens de créer un nouveau cluster et cela fonctionnait pour moi, j'utilisais (PostgreSQL) 9.3.20:

Sudo pg_createcluster 9.3 main --start
0
Bruno Filgueiras

Les autorisations de fichier sont restrictives sur la base de données Postgres appartenant au Mac OS. Ces autorisations sont réinitialisées après le redémarrage ou le redémarrage de Postgres: par exemple. serveradmin start postgres.

Donc, réinitialisez temporairement les permissions ou la propriété:

Sudo chmod o+rwx /var/pgsql_socket/.s.PGSQL.5432
Sudo chown "webUser"  /var/pgsql_socket/.s.PGSQL.5432

La réinitialisation des autorisations n’est pas sécurisée. Installez donc une version de la base de données que vous possédez pour une solution.

0
clewis

J'ai eu cette erreur après le gel de mon ordinateur et le redémarrage de celui-ci. La solution pour moi n'a pas été trouvée sur cette page, mais sur une autre très bien noté SO question avec la même erreur psql: impossible de se connecter au serveur: aucun fichier ni répertoire de ce type (Mac OS X) . La réponse: il suffit de supprimer ce fichier /usr/local/var/postgres/postmaster.pid, puis brew services restart postgresql a fait l'affaire. Tenez compte de l’avertissement relatif à la réponse liée à la suppression des processus postgres avant cela, sinon vous pourriez corrompre votre base de données de façon permanente.

0
wetjosh

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

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

Quand j'ai fait cela, j'ai vu le fichier avec l'extension .lock. Cependant, j'ai toujours eu l'erreur lorsque j'ai essayé de démarrer le serveur Rails lorsque j'ai repris le travail sur mon application Rails avec PostgreSQL. Cette fois, j'ai eu une erreur d'autorisation refusée. C'est à ce moment-là que je me suis rappelé que je devais non seulement modifier les listen_addresses du plist, mais aussi l'unité_socket_permissions en 0777. Je me suis également connecté en tant que root pour modifier les autorisations du dossier var/pgsql_socket où je pouvais y accéder. 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 ne comprenais pas, c’était que lorsque wiki avait été activé, PostgreSQL était censé fonctionner lorsque j’ai effectué une opération Sudo serveradmin fullstatus postgres, mais j’ai toujours eu l’erreur. Tant pis.