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

Je viens de mettre à niveau mon serveur MacMini 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 de faire n’importe quelle commande de terminal PostgreSQL, j’obtiens le message d’erreur notoire 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 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 regarder / 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 sur Stack Overflow, suggèrent une suppression 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 devait être résolu par les développeurs qui allaient lancer 695 $.

J’ai un site Web qui est actuellement hors service parce que je ne peux pas le reconstruire. Je ne sais pas où aller pour obtenir de l’aide à ce stade. Je continuerai à 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 firebase database.

Mise à jour: 13/12/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 sharepoint retourner à Lion Server à cause de la frustration. Maintenant je n’aurai pas à le faire.

J’ai pu append ce qui suit à mon fichier .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 ne possèdent pas de socket de domaine Unix.

Votre système d’exploitation prend en charge les sockets de domaine Unix, mais le socket Unix de PostgreSQL dont psql besoin n’existe pas ou se trouve dans un emplacement différent de celui attendu.

Spécifier explicitement un nom d’hôte comme localhost oblige psql à utiliser TCP / IP. Définir une variable d’environnement PGHOST est l’une des manières d’y parvenir. C’est documenté dans le manuel de psql .

Essayez de coller dans la console ceci:

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

J’ai pu résoudre en remplissant simplement 127.0.0.1 l’adresse de l’hôte PostgreSQL plutôt que 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': '', } } 

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

 unix_socket_directories = '/private/tmp/' 

Changez la ligne à ceci:

 unix_socket_directories = '/var/pgsql_socket/' 

Notez que si vous souhaitez séparer les fichiers de socket de plusieurs répertoires, séparez-les.

Comme mentionné par d’autres dans les commentaires, une solution vraiment simple à ce problème consiste à déclarer la firebase database “hôte” dans la configuration de la firebase database. Ajout de cette réponse pour le rendre un peu plus clair pour ceux qui lisent ceci.

Dans une application Ruby on Rails, par exemple, éditez /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 la mise à jour vers Yosemite, je n’ai jamais eu besoin de spécifier l’hôte de cette manière.

J’espère que cela aide quelqu’un.

À votre santé

Une solution beaucoup plus simple (merci à 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 de recherche sur Google sans réussir)

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

Redémarrez webrick, et c’est fini!

Vérifiez l’état de la firebase database:

 service postgresql status 

Si la firebase database n’est pas en cours d’exécution, démarrez la firebase database:

 sudo service postgresql start 

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 vous ne le remplacez pas par 5432

OU à l’utilisation du terminal

 psql -U postgres -p YOUR_PORT_NUMBER database_name 

je fais en parole en faisant ceci:

 dpkg-reconfigure locales 

et choisissez vos parameters régionaux 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 mot!

 sudo su - postgres psql 

Si vous avez le problème ci-dessus mais que vous avez effectué une mise à 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 disponibles à `pg_tblspc` après l’installation de la dernière version d’OS X (Yosemite ou El Capitan) .

J’ai eu ce problème avec Django.

Corrigez-le en définissant explicitement votre nom d’hôte sur “localhost”.

 apt-get install postgres-xc-client apt-get install postgres-xc 
 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é à obtenir 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 sur Mac OS X

Installer postgres à l’aide de l’infusion

 brew install postgres 

Installer des services d’infusion

 brew tap homebrew/services 

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

 brew services start postgresql 

Pour arrêter les postgres manuellement

 brew services stop postgresql 

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

 brew services restart postgresql 

Les permissions de fichiers sont ressortingctives pour la firebase database Postgres appartenant à Mac OS. Ces permissions sont réinitialisées après le redémarrage ou le redémarrage de Postgres: par exemple, serveradmin start postgres.

Donc, réinitialiser 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 permissions n’est pas sécurisée. Installez donc une version de la firebase database que vous possédez pour une solution.

Supprimez d’abord les postgres installés: –

sudo apt-get purge postgr *

sudo apt-get autoremove

Puis installez ‘synaptic’:

sudo apt-get install synaptic

sudo apt-get update

Ensuite, installez postgres

sudo apt-get installer postgresql postgresql-consortingb

Cela m’a pris du temps, mais j’ai pu enfin le faire après avoir parcouru les suggestions et les recherches Web supplémentaires effectuées. J’ai utilisé les informations de 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 .lock comme extension. 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 reçu une erreur de permission refusée. C’est à ce moment que je me suis souvenu que non seulement je devais changer listen_addresses dans le plist mais que je devais aussi changer unit_socket_permissions en 0777. Je me suis aussi connecté en tant que root pour modifier les permissions du dossier var / pgsql_socket 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 le wiki était activé, PostgreSQL était censé fonctionner lorsque je faisais un sudo serveradmin fullstatus postgres mais que j’avais toujours l’erreur. Tant pis.

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

 sudo pg_createcluster 9.3 main --start