54 votes

Postgresql -bash : psql : commande non trouvée

J'ai installé PostgreSQL et il fonctionne bien. Cependant, lorsque j'ai voulu restaurer une sauvegarde, j'ai obtenu l'erreur suivante -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 fait de mal ?

3 votes

Cela peut se produire sous CentOS lorsque vous installez accidentellement PostgreSQL 8.4 (package postgresql-server ) après avoir installé PostgreSQL 9.2 (paquetage postgresql-server92 ) sur la même machine. Si vous effacez PostgreSQL 8.4, yum supprime également le répertoire bin postgres du chemin.

0 votes

^^ CECI ! Merci Iain

48voto

Pavel Points 561
export PATH=/usr/pgsql-9.2/bin:$PATH

L'exécutable du programme psql se trouve 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ù se trouver psql . Lorsque la plupart des paquets 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 PATH de l'interpréteur de commandes si nous ne voulons pas avoir à taper le chemin complet du programme à chaque fois que nous l'exécutons.

Cette ligne devrait typiquement être ajoutée au script de démarrage du shell, qui pour le shell bash sera dans le fichier ~/.bashrc .

4 votes

Seriez-vous prêt à développer ce commentaire ? Il semble populaire, mais il pourrait être beaucoup plus utile avec des informations supplémentaires (par exemple, où vont les lignes ci-dessus, et que font-elles ?)

2 votes

Si vous êtes sur Mac et avez installé Postgres.app, alors ```export PATH=/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH `` ou ``` export PATH=/Applications/Postgres.app/Contents/Versions/9.6/bin:$PATH``

0 votes

@ChauskinRodion merci beaucoup ! Cette chose me tuait littéralement.

26voto

marto Points 2512

Peut-être que psql n'est pas dans la PATH de l'utilisateur postgres. Utilisez l'option localiser pour trouver où se trouve psql et s'assurer que son chemin est dans le répertoire PATH pour l'utilisateur postgres.

10voto

The Red Pea Points 98

La question est pour linux mais j'ai eu le même problème avec git bash sur ma machine Windows.

Mon pqsql est installé ici : C:\Program Files\PostgreSQL\10\bin\psql.exe

Vous pouvez ajouter l'emplacement de psql.exe à votre variable d'environnement Path comme indiqué dans cette capture d'écran :

add psql.exe to your Path environment variable

Après avoir changé ce qui précède, veuillez fermer tous les cmd et/ou bash Windows, et les rouvrir (comme mentionné dans les commentaires @Ayush Shankar)

Vous pouvez avoir besoin de changer l'utilisateur par défaut en utilisant la commande ci-dessous.

psql -U postgres

Aquí postgres est le nom d'utilisateur. Sans -U il choisira l'utilisateur connecté à Windows.

1 votes

De plus, si vous voyez que cela ne fonctionne toujours pas, fermez cmd/bash et ouvrez une nouvelle fenêtre (pas un onglet) de cmd/bash.

10voto

Chetan kapoor Points 161

Cela peut être dû au fait que psql n'est pas dans le PATH.

$ locate psql
/usr/lib/postgresql/9.6/bin/psql

Puis créer un lien dans /usr/bin

ln -s /usr/lib/postgresql/9.6/bin/psql /usr/bin/psql

Essayez ensuite d'exécuter psql, cela devrait fonctionner.

5voto

aelkz Points 603

Si vous l'exécutez sur Fedora o 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

a

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/pgsql-9.6/bin

sortie, alors :

$ printenv PATH

$ sudo su postgres

$ psql

Pour quitter le terminal postgreSQL, vous devez digitaliser :

$ \q

Source : https://serverfault.com/questions/541847/why-doesnt-sudo-know-where-psql-is#comment623883_541880

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X