2011-07-22 32 views
24

He instalado PostgreSQL y está funcionando bien. Sin embargo, cuando fui a restaurar una copia de seguridad que tengo el error -bash: psql: command not found:Postgresql -bash: psql: comando no encontrado

[[email protected] ~]# su postgres 
[[email protected] root]$ psql -f all.sql 
bash: psql: command not found 
[[email protected] root]$ 

¿Qué he hecho mal?

+3

Esto puede suceder en CentOS cuando instalar accidentalmente PostgreSQL 8.4 (paquete 'postgresql-server') después de instalar PostgreSQL 9.2 (paquete' postgresql-serve r92') en la misma máquina. Si borra PostgreSQL 8.4, yum también elimina el directorio postgres bin de la ruta. –

+0

^^ ¡ESTO! Gracias Iain –

Respuesta

14

quizás psql no está en el PATH del usuario de postgres. Use el comando locate para encontrar dónde está psql y asegúrese de que su ruta esté en el PATH para el usuario de postgres.

32
export PATH=/usr/pgsql-9.2/bin:$PATH 

El programa ejecutable psql está en el directorio /usr/pgsql-9.2/bin, y que el directorio no está incluido en la ruta de acceso por defecto, así que tenemos que decirle a nuestro programa de shell (terminal) dónde encontrar psql. Cuando se instalan la mayoría de los paquetes, se agregan a una ruta existente, como /usr/local/bin, pero no a este programa.

Así que tenemos que agregar la ruta del programa a la variable PATH del shell si no queremos tener que escribir la ruta completa al programa cada vez que lo ejecutamos.

Esta línea normalmente debe agregarse al script de inicio de shell, que para el shell bash estará en el archivo ~/.bashrc.

+3

¿Estaría dispuesto a ampliar este comentario?Parece popular, pero podría ser mucho más útil con información adicional (por ejemplo, ¿dónde van las líneas anteriores y qué hacen?) – rainbowsorbet

+0

Si está en Mac e instala Postgres.app, entonces '' ' export PATH =/Applications/Postgres.app/Contents/Versions/latest/bin: $ PATH '' ' o ' '' export PATH =/Applications/Postgres.app/Contents/Versions/9.6/bin: $ PATH '' ' –

1

Si está utilizando la aplicación Postgres para Mac (de Heroku) y Bundler, puede agregar el pg_config directamente dentro de la aplicación a su paquete.

bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config 

... luego ejecute el paquete de nuevo.

Nota: primero compruebe la versión usando lo siguiente.

ls /Applications/Postgres.app/Contents/Versions/ 
0

En caso de que se está ejecutando en Fedora o CentOS, esto es lo que funcionó para mí (PostgreSQL 9.6):

En el terminal:

$ sudo visudo -f /etc/sudoers 

modificar la siguiente Texto desde:

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin 

a

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

salida, entonces:

$ printenv PATH 

$ sudo su postgres 

$ psql 

Para salir del terminal de PostgreSQL, necesita dígitos:

$ \q 

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