Quale versione di PostgreSQL sto usando?


1027

Sono in un ambiente aziendale (con Debian Linux) e non l'ho installato da solo. Accedo ai database usando Navicat o phpPgAdmin (se questo aiuta). Inoltre non ho accesso shell al server che esegue il database.

Risposte:


1646

Esegui questa query da PostgreSQL:

SELECT version();

4
Nessun risultato nel mio caso nel terminale su Ubuntu
Timo,

23
@Timo, questa è una query da eseguire tramite PostgreSQL. Questo potrebbe essere fatto tramite pgAdmin o qualsiasi altro meccanismo per eseguire una query. Stavi cercando di eseguirlo da una shell Ubuntu? (non funzionerà)
Altamente irregolare,

41
Questo può anche essere eseguito dalla riga di comando conpsql -c 'SELECT version();'
Aaron Lelevier il

3
Puoi correre direttamente dalla bash specificando il postgres db come segue:psql postgres -c 'SELECT version();'
thathashd

22
@Frank H. Utilizzo: sudo -u postgres psql postgres -c 'SELECT version()' | grep PostgreSQLdovrebbe farti passare "il ruolo 'nome utente' non esiste".
Marco Giunio Bruto,

550

Credo che questo sia quello che stai cercando,

Versione del server:

pg_config --version

Versione client:

psql --version

1
Grazie! Funziona quando è disponibile l'accesso alla shell. Sfortunatamente nel mio caso non ho quell'accesso; Ho aggiornato la domanda.
Altamente irregolare,

3
A volte la versione client è comunque ciò che vuoi sapere.
Trejkaz,

12
Come osserva Frank, questo può essere ingannevole. psql si collegherà a qualunque processo di database postmaster / postgres sia in esecuzione e il motore di database potrebbe non essere la stessa versione del comando psql.
Ben Roberts,

2
pg_config --versionpotrebbe essere fuorviante, ad esempio se si aggiorna un server Ubuntu e non si esegue pg_upgradecluster, pg_config mostrerà la nuova versione anziché quella che si sta ancora utilizzando.
Marius Gedminas,

solo questo funziona per me: pg_config --version Il comando: psql --versionnon funziona, si lamenta per questo: dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib Referenced from: /usr/local/bin/psql Reason: image not found
RLD

217

Utilizzando la CLI:

Versione del server:

$ 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 hai più di un'installazione di PostgreSQL o ottieni l' postgres: command not founderrore " ":

$ 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 locatenon aiuta, prova 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

Sebbene postmasterpossa essere utilizzato anche al posto di postgres, postgresè preferibile utilizzare perché postmasterè un alias deprecato di postgres.

Versione client:

Se pertinente, accedi comepostgres .

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

Se hai più di un'installazione di 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

Utilizzando SQL:

Versione del server:

=> 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 più curioso, prova => SHOW all;.

Versione client:

Per quello che vale, un comando shell può essere eseguito all'interno psqlper mostrare la versione client psqldell'eseguibile nel percorso. Si noti che la corsa psqlpuò potenzialmente essere diversa da quella nel percorso.

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

12
Grazie!, SHOW server_version;È molto utile negli script per evitare di dover analizzare la lunga serie di SELECT version();.
vaab,

Molte grazie. Le persone non si rendono conto che per emettere comandi SQL è necessario conoscere almeno un ruolo per connettersi al database. Ma con postgres -V non devi sapere di connetterti al database per conoscerne la versione.
ychaouche,

Una linea in CLI assumendo accesso superutente: psql postgres -c "SHOW server_version" -t -A. -trimuove le intestazioni, -Arimuove gli spazi bianchi di allineamento.
Tasca,

Grazie SHOW server_version_numin particolare, utile per le disuguaglianze.
eswald,

64

Se stai usando la CLI e sei un postgres utente , puoi farlo:

psql -c "SELECT version();"


Uscita possibile :

                                                         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 risposta accettata è ottima, ma se è necessario interagire a livello di codice con la versione PostgreSQL, forse è meglio farlo:

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

Restituirà la versione del server come intero. Ecco come viene testata la versione del server nell'origine PostgreSQL , ad esempio:

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

Maggiori informazioni qui e qui .


36

Esegui comando

psql -V

Dove

V deve essere in maiuscolo.


8
Questa è la psqlversione (client), non la versione del server Postgres .
a_horse_with_no_name

Ai revisori : se la risposta è sbagliata ma è una risposta (come suggerisce il commento), non raccomandare la cancellazione: downvote! Vedi, ad esempio, " Stai sbagliando: un appello alla sanità mentale nella coda di messaggi di bassa qualità " e " Quando una risposta risponde alla domanda sbagliata, non è una risposta? ". Questa è una risposta Potresti non essere d'accordo, ma è un tentativo di rispondere alla domanda.
Wai Ha Lee,

19

nella shell psql.exe, eseguire

\! psql -V

13
Questo gli darà la versione del client postgre. Ho capito che OP richiede la versione del server sql.
SpKel

12

Un modo semplice è controllare la versione digitando psql --versionterminal


3
Nota che questo ti dirà solo la versione del client, che potrebbe essere molto diversa dal server. Vedi la risposta di @ simhumileco per il modo canonico.
jstr

12

Il suo utilizzo pgadmin4può essere visualizzato facendo doppio clic su Server> nome_server_qui> scheda Proprietà> Versione:

Versione 3.5:

pgadmin4 mostra la versione di postgres.  Server> nome_server> Proprietà> Versione

Versione 4.1, 4.5:

inserisci qui la descrizione dell'immagine


Non vederlo Utilizzo di pgadmin 4 versione 4.1.
faintsignal

1
@faintsignal ha aggiunto uno screenshot per pgadmin4 v4.1, che il salto di versione è avvenuto abbastanza rapidamente.
jmunsch

1
Oh, mio ​​errore. Pensavo che avessi fatto clic con il pulsante destro del mouse sul server, il che porta a una finestra di dialogo "Proprietà" diversa. Grazie!
faintsignal

9

Il comando pg_config riporterà la directory in cui sono installati i programmi PostgreSQL (--bindir), la posizione di C include i file (--includedir) e le librerie di codici oggetto (--libdir) e la versione di PostgreSQL (--version) :

$ pg_config --version
PostgreSQL 9.3.6

8

Nel mio 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)

Spero che possa aiutare qualcuno


4

Se si dispone dell'accesso shell al server (la domanda menziona op non ha, ma nel caso lo si abbia) su un sistema debian / ubuntu

sudo apt-cache policy postgresql

che produrrà la versione installata,

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

dove Installed: <version>è la versione del pacchetto postgres installato.


1
Come idea simile, ho corso $ yum listper vedere che alcuni pacchetti Postgresql erano installati.
Patrick,

questo funziona bene. Potresti indicare come aggiornare da 9.6 a 10. su Ubuntu 16.04
kRazzy R

4

usa VERSIONuna variabile speciale

$psql -c "\echo :VERSION"

2

Non so quanto sia affidabile, ma puoi ottenere due token della versione in modo completamente automatico:

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

Quindi puoi costruire percorsi per i binari:

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

Sostituisci semplicemente 9.2 con questo comando.


psql --versionrestituisce la versione del psqlclient, non la versione del server Postgres
a_horse_with_no_name

1

Per la versione corrente di PgAdmin: 4.16 al momento della scrittura.

  1. Selezionare il DB di cui è necessaria la versione.
  2. Fare clic sulla scheda Proprietà nel riquadro destro.

Vedi lo screenshot qui sotto: PGAdmin 4.16 con DB versione 10.10


0

Se Select version()ritorna con Memo, prova a utilizzare il comando in questo modo:

Select version::char(100) 

o

Select version::varchar(100)

2
select version()::varchar(100);ha funzionato per me, ma era lo stesso diversion()
isaaclw il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.