Après ma mise à niveau vers Mavericks, PostgreSQL a commencé à être lu, donnant ce message d'erreur chaque fois que j'appelle pg_restore
sans appeler le chemin complet:
pg_restore: command not found
Si je spécifie le chemin complet, cela fonctionne, mais c'est évident, pas optimal:
/Applications/Postgres93.app/Contents/MacOS/bin/pg_restore --verbose --clean --no-acl --no-owner -h localhost -U steven -d db/testivate_development $file_path
Pour résoudre ce problème, j'ai essayé de supprimer toutes les versions de PostgreSQL (avec Homebrew), puis installé Postgres.app. Vous pouvez confirmer que cela a fonctionné comme ceci:
$ Sudo find / -name pg_restore
/Applications/Postgres93.app/Contents/MacOS/bin/pg_restore
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
Pour ajouter PostgreSQL à mon chemin, j'ai essayé d'ajouter chacune des lignes suivantes à ~/.bash_profile
, ~/bashrc
et ~/.zshrc
, en redémarrant après chaque tentative:
export PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
... conformément à la documentation de postgresapp.com, puis ...
export PATH="/Applications/Postgres93.app/Contents/MacOS/bin:$PATH"
... selon les commentaires ci-dessous.
Rien de tout cela n'a résolu mon problème.
Essayez d’ajouter cette ligne à votre fichier .bash_profile:
export PATH="/Applications/Postgres93.app/Contents/MacOS/bin:$PATH"
et supprimez ou commentez la référence précédente.
J'ai eu ce problème aussi, donc au lieu de l'ajouter à mon chemin dans .bash_profile:
export PATH="/Applications/Postgres93.app/Contents/MacOS/bin:$PATH"
qui est ce qui avait été recommandé, j'ai ajouté
export PATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
au lieu. Le '9.3' est remplacé par votre propre version.
Je l'ai vérifié après en utilisant
which psql
Et il a trouvé ma version, alors qu'avant il ne signalait rien.
J'ai ensuite créé une base de données de test avec
createdb test
Cela a fonctionné comme un charme.
Si vous utilisez zsh, essayez cette ligne dans votre .zshrc puis redémarrez le terminal.
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
Les exemples cités par d'autres que export PATH=...
devraient être la solution à votre problème. Comme cela ne fonctionne pas, vous allez devoir résoudre un problème avec votre shell qui n'a rien à voir avec PostgreSQL.
Tout d’abord, faites which pg_restore
pour voir s’il existe dans votre chemin un autre fichier appelé pg_restore
qui pourrait prêter à confusion. which
ne donnera généralement pas de résultat plutôt qu'une erreur utile si rien n'est trouvé, sinon, le chemin de ce qu'il a trouvé sera affiché. Vous pouvez trouver une ancienne installation cassée de PostgreSQL dans /usr/local/bin
, par exemple.
Si cela ne fonctionne pas, essayez echo $PATH
à partir d'un nouveau shell. Voyez-vous le chemin du répertoire binaire PostgreSQL ici? Sinon, $PATH
n'est pas défini dans vos fichiers Shell point-rc. Ce serait le cas si vous l'ajoutiez à un fichier appelé ~/bashrc
puisque bash (1) lirait réellement ~/.bashrc
. Notez le point supplémentaire! Je soupçonne ceci est votre problème actuel.
Si cela ne s'avère pas être le problème, vous pouvez (re) lire le fichier rc dans votre session en cours avec source ~/.bashrc
. Encore une fois, echo $PATH
Si still ne contient pas le chemin, le fichier point-rc contient un bogue et n’est pas exécuté aussi loin que la partie qui met à jour $PATH
. Vous pouvez faire bash --verbose ~/.bashrc
pour l'exécuter, et vous verrez chaque commande en cours d'exécution. La commande en échec doit être la dernière affichée. (Notez que lorsque vous exécutez un script avec bash
, les variables ne seront pas définies dans votre shell actuel.)
Vous devez ajouter le chemin dans votre bash_profile
nano ~/.bash_profile
Ajouter cette ligne (ma version de postgres est la 9.1):
export PATH = $ PATH: /Library/PostgreSQL/9.1/bin/
Sur macOS Sierra 10.12.1 avec PostgreSQL 9.6.0.0
/Applications/Postgres.app/Contents/MacOS/Postgres
Postgres
est un fichier binaire.
sur macOS High Sierra 10.13.2 et PostgreSQL 9.6, cela fonctionne pour moi:
export PATH=$PATH:/Library/PostgreSQL/9.6/bin:$PATH
Sur mon macOS, Postgre 9.6 est installé dans
/Library/PostgreSQL/9.6