Prise le Fichier "/var/pgsql socket/.s.PGSQL.5432 " manquant dans Mountain Lion (OS X Server)
je viens de mettre à jour 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 quand J'ai installé Lion Server.
quand j'essaie de faire n'importe quel type de commande de terminal PostgreSQL j'obtiens le message d'erreur notoire suivant que beaucoup ont obtenu au cours des années:
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 essayé de changer le mot de passe de _postgres quand j'ai eu l'erreur. J'ai essayé plusieurs commandes mais ont la même erreur. J'ai redémarré mon serveur mais pas de chance. Je me suis connecté en tant que root pour regarder /var/pgsql_socket et le dossier est vide. 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 le débordement de la pile, 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 sur L'Application serveur l'utilisation de 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 lanceraient $695.
j'ai un site qui est en panne en ce moment parce que je ne peux pas le reconstruire. Je ne sais pas où se tourner pour obtenir de l'aide avec ce à ce point. Je vais continuer à chercher en ligne pour voir si je peux trouver quelque chose. Toutefois, j'espère que quelqu'un peut me donner une réponse rapide afin que je puisse reconstruire ma base de données.
mise à jour: 12/13/2012 15: 33 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: 12/13/2012 18:10 GMT-6
après une recherche intense sur le web, cette vidéo a été trouvée. J'ai réussi à faire fonctionner PostgreSQL et à supprimer l'erreur. Je peux me connecter en utilisant pgadmin et phppgadmin. J'étais sur le point de retourner à Lion Server à cause de ma frustration. Maintenant, Je n'aurez pas à.
http://www.youtube.com/watch?v=y1c7WFMMkZ4
18 réponses
j'ai pu ajouter ce qui suit à mon .bash_profile pour prévenir l'erreur:
export PGHOST=localhost
cela fonctionne parce que :
si vous omettez le nom d'hôte, psql se connectera via une socket Unix-domain à un serveur sur l'hôte local, ou via TCP/IP à localhost sur les machines qui n'ont pas de sockets Unix-domain.
votre système d'exploitation prend en charge les sockets de domaine Unix, mais Unix de PostgreSQL socket que psql
besoins soit n'existe pas ou est dans un endroit différent qu'il attend.
spécifiant explicitement un nom d'hôte comme localhost
forces psql
pour utiliser TCP/IP. Définition d'une variable d'environnement PGHOST
est l'un des moyens pour y parvenir. C'est documenté dans le manuel de psql .
Essayer de coller dans la console:
$ mkdir /var/pgsql_socket/
$ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/
j'ai été capable de résoudre en remplissant simplement 127.0.0.1 pour L'adresse de l'hôte PostgreSQL plutôt que de la laisser vide. (Django Example)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'database_name',
'USER': 'database_user',
'PASSWORD': 'pass',
'HOST': '127.0.0.1',
'PORT': '',
}
}
Ouvrir " postgresql.conf' de vous éditeur préféré. Cherchez la variable 'unix_socket_directories', elle ressemblera très probablement à ceci:
unix_socket_directories = '/private/tmp/'
modifier la ligne comme suit:
unix_socket_directories = '/var/pgsql_socket/'
notez si vous voulez que les fichiers socket dans plus d'un répertoire soient séparés par une virgule.
comme mentionné par d'autres dans les commentaires, une solution vraiment simple à ce problème est de déclarer la base de données "hôte" dans la configuration de la base de données. Ajouter cette réponse juste pour le rendre un peu plus clair pour quiconque lisant ceci.
dans une application Ruby on Rails par exemple, éditer /config/database.yml:
development:
adapter: postgresql
encoding: unicode
database: database_name
pool: 5
host: localhost
Note: la dernière ligne ajoutée pour spécifier l'hôte. Avant la mise à jour de Yosemite, je n'ai jamais nécessaire de spécifier l'hôte de cette façon.
J'espère que ça aidera quelqu'un.
Cheers
une solution beaucoup plus simple (grâce à http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres / ). J'avais mis à niveau vers postgresql 9.4. Dans mon cas, tout ce que je devais faire (après une journée de googling et de ne pas réussir)
gem uninstall pg
gem uninstall activerecord-postgresql-adapter
bundle install
redémarrez webrick, et c'est fait!
Vérifier l'état de la base de données:
service postgresql status
si la base de données n'est pas en cours d'exécution, démarrer le db:
sudo service postgresql start
pouvez-vous vérifier votre postgresql.fichier conf ??
sur quel port vos postgres courent-ils ??
je pense qu'il ne fonctionne pas sur le port 5432.Si vous ne le changez pas en 5432
ou sur utilisation finale
psql -U postgres -p YOUR_PORT_NUMBER database_name
je fais en mot en faisant ceci:
dpkg-reconfigure locales
et choisissez vos emplacements préférés
pg_createcluster 9.5 main --start
(9.5 est ma version de postgresql)
/etc/init.d/postgresql start
et puis il mot!
sudo su - postgres
psql
si vous avez le problème ci-dessus mais que vous avez mis à jour depuis Yosemite, alors une approche différente est nécessaire car la solution de mise à niveau peut détruire certains fichiers. Plus de détails sont à `pg_tblspc` manquant 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 en"localhost".
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 deux solutions n'a fonctionné pour moi. Enfin la solution suivante a résolu mon problème sur Mac OS X
Installer postgres à l'aide de brassage
brew install postgres
Installer brew services
brew tap homebrew/services
Pour démarrer postgres comme un service d'arrière-plan
brew services start postgresql
pour arrêter les postgres manuellement
brew services stop postgresql
nous pouvons aussi l'utilisation de brasser de services à redémarrer Postgres
brew services restart postgresql
vérifiez que le serveur postgres tourne avec le code suivant
sudo service postgresql status
si le serveur postgres est inactif, écrivez la commande suivante.
sudo service postgresql start
sont restrictives sur le db de Postgres détenu par Mac OS. Ces permissions sont réinitialisées après redémarrage, ou redémarrage de Postgres: par exemple serveradmin start postgres.
Donc, temporairement réinitialiser les autorisations ou de la propriété:
sudo chmod o+rwx /var/pgsql_socket/.s.PGSQL.5432
sudo chown "webUser" /var/pgsql_socket/.s.PGSQL.5432
Permissions réinitialisation n'est pas sécurisé, donc installer une version de la db que vous possédez pour une solution.
cela m'a pris un certain temps, mais j'ai finalement réussi à obtenir ce résultat après avoir examiné les suggestions offertes et les recherches supplémentaires effectuées sur le web. J'ai utilisé l'information dans la vidéo YouTube suivante créée par Mactasia:
http://www.youtube.com/watch?v=y1c7WFMMkZ4
quand j'ai fait ça, j'ai vu le dossier .verrouillage comme extension. Cependant j'ai quand même eu l'erreur quand j'ai essayé de démarrer le serveur de Rails quand je reprise du travail sur mon application Rails en utilisant PostgreSQL. Cette fois, on m'a refusé une permission. C'est alors que je me suis souvenu que non seulement j'ai dû changer listen_addresses dans la liste, mais j'ai aussi dû changer unit_socket_permissions à 0777. Je me suis aussi connecté en tant que root pour changer les permissions sur le dossier var/pgsql_socket où je pourrais y accéder au niveau de l'utilisateur. Postgres fonctionne bien maintenant. Je suis en train de recharger mes données depuis ma sauvegarde SQL.
Ce que je n'ai pas compris, c'est que lorsque j'ai eu wiki activé PostgreSQL était supposé fonctionner quand j'ai fait un sudo serveradmin fullstatus postgres mais j'ai quand même eu l'erreur. Oh bien.
je viens de créer un nouveau cluster et qui a fonctionné pour moi, j'ai utilisé (PostgreSQL) 9.3.20:
sudo pg_createcluster 9.3 main --start
supprimer D'abord les boutons installés:
sudo apt-get purge postgr*
sudo apt-get autoremove
puis installer "synaptic":
sudo apt-get install synaptic
sudo apt-get update
puis installer Postgres
sudo apt-get install postgresql postgresql-contrib