web-dev-qa-db-fra.com

Postgres Homebrew cassé

J'ai installé Postgresql 9.4.0 installé sur mon Mac (10.10.1/Yosemite) en utilisant homebrew. Ça ne marche pas.

J'ai créé le lien virtuel vers /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist dans ~/Library/LaunchAgents.

Si j'essaie de charger manuellement postgres, le message "Opération en cours" s'affiche.

> launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
/usr/local/Cellar/postgresql/9.4.0/homebrew.mxcl.postgresql.plist: Operation already in progress

Cependant, postgres ne semble pas fonctionner.

> ps auxw | grep post
billmcn           670   0.0  0.0  2424272    452 s000  R+   10:12PM   0:00.01 grep post

et je ne peux pas me connecter au client en ligne de commande.

> psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

À ma connaissance, j'ai essayé tous les correctifs suggérés sur les discussions otherStackoverflow traitant de ce problème. Plus précisément:

  • J'ai désinstallé et réinstallé postgres et la gemme Ruby) qui l'accompagne. Il n'y a pas de version postgres 8.0 sur ma machine.
  • J'ai vérifié que le programme client psql correspond à la version 9.4.0 installée par Homebrew et non à un fichier binaire système Mac.
  • J'ai vérifié que le fichier /usr/local/var/postgres/postmaster.pid n'existe pas.
  • J'ai redémarré la machine.

J'ai eu des postgres Homebrew travaillant sur cette machine plus tôt. Je pense que ce qui l’a cassé, c’est de passer de la version 8 à la version 9, mais je ne suis pas sûr.

Je n'ai aucune base de données à préserver. Je suis prêt à commencer propre avec postgres; J'ai juste besoin de le faire fonctionner maintenant. Des idées?


Le problème semble avoir été des autorisations sur le répertoire/usr/local/var/postgres. Voici à quoi ressemblait mon répertoire var quand les choses ne fonctionnaient pas.

ll /usr/local/var/
drwxr-xr-x  3 billmcn  admin  102 Dec 20 12:44 cache
drwxr--r--  2 root     admin   68 Dec 29 21:37 postgres

(whoami = "billmcn")

J'ai supprimé/usr/local/var/postgres, désinstallé et réinstallé postgres, et voici à quoi il ressemble.

ll /usr/local/var/
drwxr-xr-x   3 billmcn  admin  102 Dec 20 12:44 cache
drwx------  23 billmcn  admin  782 Dec 30 10:51 postgres

Pas sûr de savoir comment il est entré dans cet état parce que je ne me souviens pas d'avoir utilisé les permissions sur ce répertoire, mais peu importe. Ça fonctionne maintenant.

60
W.P. McNeill

J'ai eu le même problème lors de l’installation de Postgres en utilisant l’homebrew sur un Yosemite fraîchement installé.

Tout d’abord, ma configuration de bière ressemble à ceci:

HOMEBREW_VERSION: 0.9.5
Origin: https://github.com/Homebrew/homebrew
HEAD: 9f6926265f8e4be7cc80dfe9042f2cd3c1e8dc9e
Last commit: 64 minutes ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CELLAR: /usr/local/Cellar
CPU: quad-core 64-bit sandybridge
OS X: 10.10.1-x86_64
Xcode: 6.1.1
Clang: 6.0 build 600
X11: N/A
System Ruby: 2.0.0-481
Perl: /usr/bin/Perl
Python: /usr/bin/python
Ruby: ~/.rvm/rubies/Ruby-2.1.1/bin/Ruby

La première chose que j'ai remarquée, c'est que je n'avais pas d'autorisation d'écriture pour /usr/local/var/postgres. Cela a été facilement changé en émettant Sudo chown -R `whoami` /usr/local/var/postgres puis j'ai réinstallé postgresql et fait

cat /usr/local/var/postgres/server.log

qui a révélé:

postgres cannot access the server configuration file "/usr/local/var/postgres/postgresql.conf": No such file or directory

J'ai donc supprimé le répertoire /usr/local/var/postgres et a lancé la commande pour initialiser la base de données.

initdb -D /usr/local/var/postgres/

Cela semblait avoir fait l'affaire et postgres fonctionne bien.

100
Tom Henrik Aadland

J'ai eu le même problème. Le problème principal ici est que l'étape d'installation initdb créera le répertoire avec la propriété root plutôt que comme l'utilisateur sur un Mac. Pour résoudre ce problème:

Créez le répertoire de données avant d'exécuter initdb et définissez les autorisations sur 0700

rm -rf /usr/local/var/postgres  # in case this is not your first try
mkdir /usr/local/var/postgres
chmod 0700 /usr/local/var/postgres

Puis exécutez initdb et il respectera les autorisations du répertoire de données.

initdb -D /usr/local/var/postgres

Pour les grimaces et les rires, créez une base de test nommée d'après votre utilisateur:

createdb `whoami`

Connectez-vous pour tester:

psql
41
James

Après avoir essayé d'installer postgresql avec Homebrew, j'ai obtenu ceci:

Warning: postgresql-9.5.2 already installed, it's just not linked

Alors j'ai essayé:

brew link postgresql

Et j'ai cette erreur:

Linking /usr/local/Cellar/postgresql/9.5.2... 
Error: Could not symlink share/man/man3/SPI_connect.3
/usr/local/share/man/man3 is not writable.

Cela semblait être une question d’autorisation en écriture, alors j’ai fait:

Sudo chown -R `whoami` /usr/local/share/man/

Cela a fait l'affaire parce que j'ai pu faire (sans erreur):

brew link postgresql
13
Léo Chaz Maltrait

Veuillez noter qu’il s’agit d’un fil de discussion sur le github de Homebrew traitant de ce problème: https://github.com/Homebrew/homebrew/issues/3524


J'ai eu un problème similaire. La réponse de James m'a aidé à le résoudre. Mais j’ai ensuite rencontré le problème mentionné par jbk (après avoir supprimé/usr/local/var/postgres, il a continué à être recréé).

Le problème est que si vous avez créé le lien symbolique:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

et a lancé le processus:

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

vous devriez d'abord le décharger:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

avant d'exécuter les commandes de James.

rm -rf /usr/local/var/postgres  # in case this is not your first try
mkdir /usr/local/var/postgres
chmod 0700 /usr/local/var/postgres

De plus, si, comme moi, vous avez un utilisateur administrateur qui gère homebrew et un utilisateur régulier qui utilisera pgsl à des fins de développement, la commande James devrait être exécutée en tant que super utilisateur:

Sudo -s

et la propriété du répertoire postgres doit être donnée à votre utilisateur dev:

chown my-dev-user /usr/local/var/postgres

La commande suivante, exécutée en tant qu'utilisateur dev, devrait alors renseigner correctement le répertoire:

createdb `whoami`

Fonctionnement:

psql -l

devrait vous montrer les tables et les autorisations des utilisateurs dans Postgre après de telles manipulations.

J'espère que cela t'aides.

9
Cedric

Si quelqu'un a mis à jour une version précédente, n'oubliez pas de:

brew postgresql-upgrade-database

Cela résoudra le problème en mettant à niveau vos bases de données existantes vers la version que vous avez mise à niveau vers postgres.

1
Lisandro

Vérifiez @leo_chaz_maltrait pour corriger les erreurs, l'erreur Could not symlink share/man/man3/SPI_connect.3 Une autre erreur qui pourrait apparaître est:

Error: Could not symlink lib/pkgconfig/libecpg.pc

Sudo chown -R `whoami` /usr/local/lib/pkgconfig

brew link postgresql
0
Anthony Awuley

Pour la postérité, j'avais ce problème et je voulais noter ce qui fonctionnait pour moi.

Je cours postgres 11.2 sur High Sierra. Je venais de mettre à jour Postgres 10 avec brew postgresql-upgrade-database.

J'ai continué à avoir l'erreur psql: could not connect to server: No such file or directory, Et mon server.log indiquait is another postmaster (PID 5894) running in data directory "/usr/local/var/postgres"?

J'ai essayé plusieurs solutions, y compris le redémarrage de mon ordinateur, la suppression de postmaster.pid, L'utilisation de brew services restart postgres, Mais en vain. Je suis finalement tombé sur la solution:

brew unlink postgresql && brew link postgresql

Aucune idée pourquoi cela a fonctionné, mais le mettre ici surtout pour que je puisse le référencer moi-même à l'avenir! Jeter des choses sur le mur jusqu'à ce qu'il colle!

0
Sam