Qual versão do PostgreSQL estou executando?


1027

Estou em um ambiente corporativo (executando o Debian Linux) e não o instalei. Eu acesso os bancos de dados usando Navicat ou phpPgAdmin (se isso ajudar). Também não tenho acesso de shell ao servidor que está executando o banco de dados.

Respostas:


1646

Execute esta consulta no PostgreSQL:

SELECT version();

4
Nenhum resultado no meu caso no terminal no Ubuntu
Timo

23
@Timo, esta é uma consulta a ser executada através do PostgreSQL. Isso pode ser feito através do pgAdmin ou de qualquer outro mecanismo para executar uma consulta. Você estava tentando executá-lo a partir de um shell do Ubuntu? (isso não vai funcionar)
altamente irregular

41
Isso também pode ser executado a partir da linha de comando compsql -c 'SELECT version();'
Aaron Lelevier

3
Você pode executar diretamente da festa especificando os postgres db como segue:psql postgres -c 'SELECT version();'
thathashd

22
@Frank H. Usando: sudo -u postgres psql postgres -c 'SELECT version()' | grep PostgreSQLvocê deve passar "papel 'nome de usuário' não existe".
Marcus Junius Brutus

550

Eu acredito que é isso que você está procurando,

Versão do servidor:

pg_config --version

Versão do cliente:

psql --version

1
Obrigado! Isso funciona quando o acesso ao shell está disponível. Infelizmente, no meu caso, não tenho esse acesso; Eu atualizei a pergunta.
Altamente irregular

3
Às vezes, a versão do cliente é o que você deseja saber.
Trejkaz

12
Como observa Frank, isso pode ser enganador. O psql se conectará a qualquer processo de banco de dados postmaster / postgres em execução e o mecanismo de banco de dados pode não ter a mesma versão do comando psql.
Ben Roberts

2
pg_config --versionpode ser enganoso, por exemplo, se você atualizar um servidor Ubuntu e não executar pg_upgradecluster, o pg_config mostrará a nova versão em vez da que você ainda está usando.
Marius Gedminas

apenas isso funciona para mim: pg_config --version O comando: psql --versionnão funciona, reclama por isso: 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:

Versão do 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

Se houver mais de uma instalação do PostgreSQL ou se estiver recebendo o postgres: command not founderro " ":

$ 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

Se locatenão ajudar, tente 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

Embora postmastertambém possa ser usado em vez de postgres, postgresé preferível usar porque postmasteré um alias obsoleto de postgres.

Versão do cliente:

Como relevante, faça o login comopostgres .

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

Se houver mais de uma instalação do 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:

Versão do 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

Se mais curioso, tente => SHOW all;.

Versão do cliente:

Pelo que vale, um comando shell pode ser executado dentro psqlpara mostrar a versão do cliente do psqlexecutável no caminho. Observe que a execução psqlpode ser potencialmente diferente daquela no caminho.

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

12
Obrigado !, o SHOW server_version;é muito útil em scripts para evitar a análise na longa sequência de SELECT version();.
vaab

Muito obrigado. As pessoas não percebem que, para emitir comandos SQL, é necessário conhecer pelo menos uma função para se conectar ao banco de dados. Mas com o postgres -V, você não precisa saber para se conectar ao banco de dados para saber sua versão.
ychaouche

Uma linha em CLI assumindo acesso de superusuário: psql postgres -c "SHOW server_version" -t -A. -tremove cabeçalhos, -Aremove o espaço em branco do alinhamento.
Pocketsand

Obrigado SHOW server_version_numem particular, o que é útil para as desigualdades.
eswald

64

Se você estiver usando a CLI e for um postgres usuário , poderá fazer o seguinte:

psql -c "SELECT version();"


Saída possível :

                                                         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

A resposta aceita é ótima, mas se você precisar interagir programaticamente com a versão do PostgreSQL, talvez seja melhor fazer:

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

Ele retornará a versão do servidor como um número inteiro. É assim que a versão do servidor é testada na fonte do PostgreSQL , por exemplo:

/*
 * 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...
     */  

Mais informações aqui e aqui .


36

Executar comando

psql -V

Onde

V deve estar em maiúscula.


8
Essa é a psqlversão (cliente), não a versão do servidor Postgres .
a_horse_with_no_name

Para os revisores : se a resposta estiver errada, mas for uma resposta (como o comentário indica), não recomende a exclusão: voto negativo! Veja, por exemplo, " Você está fazendo errado: um pedido de sanidade na fila de publicações de baixa qualidade " e " Quando uma resposta responde à pergunta errada, não é uma resposta? ". Esta é uma resposta. Você pode não concordar com isso, mas é uma tentativa de responder à pergunta.
Wai Ha Lee


12

Uma maneira simples é verificar a versão digitando psql --versionterminal


3
Observe que isso indicará apenas a versão do cliente, que pode ser diferente do servidor. Veja a resposta de @ simhumileco para o caminho canônico.
jstr

12

Para usá- pgadmin4lo, clique duas vezes em Servidores> server_name_here> guia Propriedades> Versão:

Versão 3.5:

pgadmin4 mostra a versão do postgres.  Servidores> server_name> Propriedades> Versão

Versão 4.1, 4.5:

insira a descrição da imagem aqui


Não vejo isso. Usando o pgadmin 4 versão 4.1.
Faintsignal

1
O @faintsignal adicionou a captura de tela do pgadmin4 v4.1, esse salto de versão aconteceu muito rápido.
jmunsch

1
Oh, meu erro. Eu pensei que você estava clicando com o botão direito do mouse no servidor, o que leva a uma caixa de diálogo "Propriedades" diferente. Obrigado!
Faintsignal 17/01/19

9

O comando pg_config relatará o diretório em que os programas PostgreSQL estão instalados (--bindir), a localização do arquivo C (--includedir) e as bibliotecas de códigos de objeto (--libdir) e a versão do PostgreSQL (--version) :

$ pg_config --version
PostgreSQL 9.3.6

8

No meu 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 ajude alguém


4

Se você tiver acesso shell ao servidor (a pergunta menciona op não, mas no caso de você possuir) em um sistema debian / ubuntu

sudo apt-cache policy postgresql

que produzirá a versão 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

onde Installed: <version>é a versão do pacote postgres instalado.


1
Como uma idéia semelhante, corri $ yum listpara ver que determinados pacotes do Postgresql estavam instalados.
Patrick

isso funciona bem. Você poderia por favor indique como fazer o upgrade de 9,6 a 10. no Ubuntu 16.04
Krazzy R


2

Não sabe o quão confiável é isso, mas você pode obter dois tokens de versão totalmente automaticamente:

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

Assim, você pode criar caminhos para os binários:

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

Apenas substitua 9.2 por este comando.


psql --versionretorna a versão do psqlcliente, não a versão do servidor Postgres
a_horse_with_no_name 11/03/19

1

Para a versão atual do PgAdmin: 4.16 no momento da escrita.

  1. Selecione o banco de dados cuja versão você precisa.
  2. Clique na guia de propriedades no painel direito.

Veja a captura de tela abaixo: PGAdmin 4.16 mostrando o DB versão 10.10


0

Se Select version()retornar com Memo, tente usar o comando desta maneira:

Select version::char(100) 

ou

Select version::varchar(100)

2
select version()::varchar(100);funcionou para mim, mas era o mesmo queversion()
isaaclw 3/13/13
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.