¿Qué versión de PostgreSQL estoy ejecutando?


1027

Estoy en un entorno corporativo (ejecutando Debian Linux) y no lo instalé yo mismo. Accedo a las bases de datos usando Navicat o phpPgAdmin (si eso ayuda). Tampoco tengo acceso de shell al servidor que ejecuta la base de datos.

Respuestas:


1646

Ejecute esta consulta desde PostgreSQL:

SELECT version();

44
Ningún resultado en mi caso en la terminal en Ubuntu
Timo

23
@Timo, esta es una consulta que se ejecutará a través de PostgreSQL. Esto podría hacerse a través de pgAdmin, o cualquier otro mecanismo para ejecutar una consulta. ¿Intentaste ejecutarlo desde un shell de Ubuntu? (esto no funcionará)
Muy irregular

41
Esto también se puede corrió desde la línea de comandospsql -c 'SELECT version();'
Aaron Lelevier

3
Puede ejecutar directamente desde el bash especificando la base de datos postgres de la siguiente manera:psql postgres -c 'SELECT version();'
thathashd

22
@Frank H. Uso: sudo -u postgres psql postgres -c 'SELECT version()' | grep PostgreSQLdebería pasar "el rol 'nombre de usuario' no existe".
Marcus Junius Brutus el

550

Creo que esto es lo que estás buscando,

Versión del servidor:

pg_config --version

Versión del cliente:

psql --version

1
¡Gracias! Esto funciona cuando el acceso de shell está disponible. Lamentablemente en mi caso no tengo ese acceso; He actualizado la pregunta.
Muy irregular

3
A veces, la versión del cliente es lo que quieres saber de todos modos.
Trejkaz

12
Como señala Frank, esto puede ser engañoso. psql se conectará a cualquier proceso de base de datos postmaster / postgres que se esté ejecutando y el motor de la base de datos puede no ser la misma versión que el comando psql.
Ben Roberts el

2
pg_config --versionpodría ser engañoso, por ejemplo, si actualiza un servidor Ubuntu y no lo ejecuta pg_upgradecluster, pg_config mostrará la nueva versión en lugar de la que todavía está usando.
Marius Gedminas

solo esto funciona para mí: pg_config --version El comando: psql --versionno funciona, se queja por esto: dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib Referenced from: /usr/local/bin/psql Reason: image not found
rld

217

Usando CLI:

Versión del servidor:

$ postgres -V  # Or --version.  Use "locate bin/postgres" if not found.
postgres (PostgreSQL) 9.6.1
$ postgres -V | awk '{print $NF}'  # Last column is version.
9.6.1
$ postgres -V | egrep -o '[0-9]{1,}\.[0-9]{1,}'  # Major.Minor version
9.6

Si tiene más de una instalación de PostgreSQL, o si recibe el postgres: command not founderror " ":

$ locate bin/postgres | xargs -i xargs -t '{}' -V  # xargs is intentionally twice.
/usr/pgsql-9.3/bin/postgres -V 
postgres (PostgreSQL) 9.3.5
/usr/pgsql-9.6/bin/postgres -V 
postgres (PostgreSQL) 9.6.1

Si locateno ayuda, intente find:

$ sudo find / -wholename '*/bin/postgres' 2>&- | xargs -i xargs -t '{}' -V  # xargs is intentionally twice.
/usr/pgsql-9.6/bin/postgres -V 
postgres (PostgreSQL) 9.6.1

Aunque postmastertambién se puede usar en lugar de postgres, postgreses preferible usarlo porque postmasteres un alias obsoleto depostgres .

Versión del cliente:

Tan relevante, inicie sesión comopostgres .

$ psql -V  # Or --version
psql (PostgreSQL) 9.6.1

Si tiene más de una instalación de PostgreSQL:

$ locate bin/psql | xargs -i xargs -t '{}' -V  # xargs is intentionally twice.
/usr/bin/psql -V 
psql (PostgreSQL) 9.3.5
/usr/pgsql-9.2/bin/psql -V 
psql (PostgreSQL) 9.2.9
/usr/pgsql-9.3/bin/psql -V 
psql (PostgreSQL) 9.3.5

Usando SQL:

Versión del servidor:

=> SELECT version();
                                                   version                                                    
--------------------------------------------------------------------------------------------------------------
 PostgreSQL 9.2.9 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4), 64-bit

=> SHOW server_version;
 server_version 
----------------
 9.2.9

=> SHOW server_version_num;
 server_version_num 
--------------------
 90209

Si tienes más curiosidad, prueba => SHOW all; .

Versión del cliente:

Para lo que vale, se puede ejecutar un comando de shell psqlpara mostrar la versión del cliente del psqlejecutable en la ruta. Tenga en cuenta que la ejecución psqlpuede ser potencialmente diferente de la de la ruta.

=> \! psql -V
psql (PostgreSQL) 9.2.9

12
¡Gracias!, SHOW server_version;Es muy útil en los scripts para evitar tener que analizar en la larga cadena de SELECT version();.
vaab

Muchas gracias. La gente no se da cuenta de que para emitir comandos SQL debe conocer al menos un rol para conectarse a la base de datos. Pero con postgres -V no tiene que saber conectarse a la base de datos para conocer su versión.
ychaouche

Una línea de CLI asumiendo acceso de superusuario: psql postgres -c "SHOW server_version" -t -A. -telimina encabezados, -Aelimina espacios en blanco de alineación.
Bolsillos y

Gracias SHOW server_version_numen particular, lo cual es útil para las desigualdades.
eswald

64

Si está utilizando CLI y es un postgres usuario , puede hacer esto:

psql -c "SELECT version();"


Salida posible :

                                                         version                                                         
-------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 11.1 (Debian 11.1-3.pgdg80+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10+deb8u2) 4.9.2, 64-bit
(1 row)

37

La respuesta aceptada es excelente, pero si necesita interactuar mediante programación con la versión PostgreSQL, tal vez sea mejor hacerlo:

SELECT current_setting('server_version_num'); -- Returns 90603 (9.6.3)
-- Or using SHOW command:
SHOW server_version_num; -- Returns 90603 too

Devolverá la versión del servidor como un entero. Así es como se prueba la versión del servidor en la fuente PostgreSQL , por ejemplo:

/*
 * This is a C code from pg_dump source.
 * It will do something if PostgreSQL remote version (server) is lower than 9.1.0
 */
if (fout->remoteVersion < 90100)
    /*
     * Do something...
     */  

Más información aquí y aquí .


36

Ejecutar comando

psql -V

Dónde

V debe estar en mayúscula.


8
Esa es la psqlversión (cliente), no la versión del servidor Postgres .
a_horse_with_no_name

Para los revisores : si la respuesta es incorrecta pero es una respuesta (como lo indica el comentario), no recomiende la eliminación: ¡voto negativo! Consulte, por ejemplo, " Lo está haciendo mal: una súplica de cordura en la cola Publicaciones de baja calidad " y " Cuando una respuesta responde a la pregunta incorrecta, ¿no es una respuesta? ". Esta es una respuesta Puede que no esté de acuerdo con esto, pero es un intento de responder la pregunta.
Wai Ha Lee


12

Una manera simple es verificar la versión escribiendo psql --versionterminal


3
Tenga en cuenta que esto solo le indicará la versión del cliente, que posiblemente podría ser diferente al servidor. Vea la respuesta de @ simhumileco para la forma canónica.
jstr

12

El uso pgadmin4se puede ver haciendo doble clic en Servidores> nombre_servidor_aquí> pestaña Propiedades> Versión:

Versión 3.5:

pgadmin4 muestra la versión postgres.  Servidores> nombre_servidor> Propiedades> Versión

Versión 4.1, 4.5:

ingrese la descripción de la imagen aquí


No lo veo Usando pgadmin 4 versión 4.1.
faintsignal

1
@faintsignal agregó una captura de pantalla para pgadmin4 v4.1, ese salto de versiones sucedió bastante rápido.
jmunsch

1
Oh, mi error Pensé que estabas haciendo clic derecho en el servidor, lo que conduce a un cuadro de diálogo "Propiedades" diferente. ¡Gracias!
faintsignal

9

El comando pg_config informará el directorio donde están instalados los programas PostgreSQL (--bindir), la ubicación de C incluye archivos (--includedir) y bibliotecas de código de objeto (--libdir), y la versión de PostgreSQL (--version) :

$ pg_config --version
PostgreSQL 9.3.6

8

En mi caso

$psql
postgres=# \g
postgres=# SELECT version();
                                                       version
---------------------------------------------------------------------------------------------------------------------
 PostgreSQL 8.4.21 on x86_64-pc-linux-gnu, compiled by GCC gcc-4.6.real (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit
(1 row)

Espero que ayude a alguien


4

Si tiene acceso de shell al servidor (la pregunta menciona que no tiene op, pero en caso de que lo tenga) en un sistema debian / ubuntu

sudo apt-cache policy postgresql

que dará salida a la versión instalada,

postgresql:
  Installed: 9.6+184ubuntu1.1
  Candidate: 9.6+184ubuntu1.1
  Version table:
 *** 9.6+184ubuntu1.1 500
        500 http://in.archive.ubuntu.com/ubuntu artful-updates/main amd64 Packages
        500 http://in.archive.ubuntu.com/ubuntu artful-updates/main i386 Packages
        500 http://security.ubuntu.com/ubuntu artful-security/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu artful-security/main i386 Packages
        100 /var/lib/dpkg/status
     9.6+184ubuntu1 500
        500 http://in.archive.ubuntu.com/ubuntu artful/main amd64 Packages
        500 http://in.archive.ubuntu.com/ubuntu artful/main i386 Packages

donde Installed: <version>está la versión instalada del paquete postgres.


1
Como una idea similar, corrí $ yum listpara ver que se instalaron ciertos paquetes Postgresql.
Patrick

Esto funciona bien. ¿Podría indicar cómo actualizar de 9.6 a 10. en ubuntu 16.04
kRazzy R


2

No sé qué tan confiable es esto, pero puede obtener dos tokens de versión de forma totalmente automática:

psql --version 2>&1 | tail -1 | awk '{print $3}' | sed 's/\./ /g' | awk '{print $1 "." $2}'

Para que pueda crear rutas a binarios:

/usr/lib/postgresql/9.2/bin/postgres

Simplemente reemplace 9.2 con este comando.


psql --versiondevuelve la versión del psqlcliente, no la versión del servidor Postgres
a_horse_with_no_name

1

Para la versión actual de PgAdmin: 4.16 en el momento de la escritura.

  1. Seleccione la base de datos cuya versión necesita.
  2. Haga clic en la pestaña de propiedades en el panel derecho.

Ver captura de pantalla a continuación: PGAdmin 4.16 que muestra DB versión 10.10


0

Si Select version()regresa con Memo, intente usar el comando de esta manera:

Select version::char(100) 

o

Select version::varchar(100)

2
select version()::varchar(100);funcionó para mí, pero fue lo mismo queversion()
isaaclw
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.