J'ai installé PostgreSQL et ça fonctionne bien. Cependant, lorsque je suis allé restaurer une sauvegarde, j'ai eu l'erreur -bash: psql: command not found
:
[root@server1 ~]# su postgres
[postgres@server1 root]$ psql -f all.sql
bash: psql: command not found
[postgres@server1 root]$
Qu'est ce que j'ai mal fait?
peut-être que psql n'est pas dans la PATH
de l'utilisateur postgres. Utilisez la commande Locate pour trouver où se trouve psql et assurez-vous que son chemin est dans PATH
pour l'utilisateur postgres.
export PATH=/usr/pgsql-9.2/bin:$PATH
L'exécutable du programme psql
est dans le répertoire /usr/pgsql-9.2/bin
et ce répertoire n'est pas inclus dans le chemin par défaut. Nous devons donc indiquer à notre programme Shell (terminal) où trouver psql
. Lorsque la plupart des packages sont installés, ils sont ajoutés à un chemin existant, tel que /usr/local/bin
, mais pas à ce programme.
Nous devons donc ajouter le chemin du programme à la variable Shell PATH si nous ne voulons pas avoir à taper le chemin complet du programme à chaque fois que nous l'exécutons.
Cette ligne doit généralement être ajoutée au script de démarrage de la coque, qui pour le shell bash sera dans le fichier ~/.bashrc
.
Si vous l'exécutez sur Fedora ou CentOS, voici ce qui a fonctionné pour moi (PostgreSQL 9.6):
En terminal:
$ Sudo visudo -f /etc/sudoers
modifier le texte suivant de:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
à
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/pgsql-9.6/bin
sortir, puis:
$ printenv PATH
$ Sudo su postgres
$ psql
Pour quitter le terminal postgreSQL, vous devez entrer:
$ \q
Source: https://serverfault.com/questions/541847/why-doesnt-Sudo-know-where-psql-is#comment623883_541880
Si vous utilisez l'application Mac Postgres (de Heroku) et Bundler, vous pouvez ajouter le pg_config directement dans l'application, à votre offre.
bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
... puis relancez bundle.
Remarque: vérifiez d'abord la version en utilisant les éléments suivants.
ls /Applications/Postgres.app/Contents/Versions/
Cela peut être dû au fait que psql n'est pas dans PATH
$ locate psql
/usr/lib/postgresql/9.6/bin/psql
Créez ensuite un lien dans/usr/bin
ln -s /usr/lib/postgresql/9.6/bin/psql /usr/bin/psql
Ensuite, essayez d’exécuter psql pour que cela fonctionne.