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.
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 .
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 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': '',
}
}
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.
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é
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!
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
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
J'ai eu ce problème avec Django.
Résolvez-le en définissant explicitement votre nom d'hôte sur "localhost".
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
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
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) .
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
apt-get install postgres-xc-client
apt-get install postgres-xc
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
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
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.
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.
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.