¿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.

Altamente irregular
fuente

Respuestas:

1646

Ejecute esta consulta desde PostgreSQL:

SELECT version();
Altamente irregular
fuente
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
Tim Büthe
fuente
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
Acumenus
fuente
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)
simhumileco
fuente
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í .

Michel Milezzi
fuente
36

Ejecutar comando

psql -V

Dónde

V debe estar en mayúscula.

vipin cp
fuente
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
19

en shell psql.exe, ejecute

\! psql -V
Diego Santa Cruz Mendezú
fuente
13
Esto le dará la versión del cliente postgre. Creo que OP está pidiendo la versión del servidor sql.
SpKel
12

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

Alex Trn
fuente
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í

jmunsch
fuente
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
Donato
fuente
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

Vikas Hardia
fuente
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.

Todo es variado
fuente
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
4

usar VERSIONvariable especial

$psql -c "\echo :VERSION"
Frank Liu
fuente
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.

Aleksei Petrenko
fuente
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

Zurdo G Balogh
fuente
0

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

Select version::char(100) 

o

Select version::varchar(100)
aTa
fuente
2
select version()::varchar(100);funcionó para mí, pero fue lo mismo queversion()
isaaclw