1368 Stimmen

Welche Version von PostgreSQL verwende ich?

Ich befinde mich in einer Unternehmensumgebung (mit Debian Linux) und habe es nicht selbst installiert. Ich greife auf die Datenbanken mit Navicat oder phpPgAdmin zu (falls das hilft). Außerdem habe ich keinen Shell-Zugriff auf den Server, auf dem die Datenbank läuft.

2116voto

Highly Irregular Punkte 35060

Führen Sie diese Abfrage von PostgreSQL aus:

SELECT version();

689voto

Ich glaube, das ist wonach du suchst,

Server Version:

pg_config --version

Client Version:

psql --version

250voto

Asclepius Punkte 48774

Verwendung von CLI:

Serverversion:

$ postgres -V  # Oder --version.  Verwende "locate bin/postgres", wenn nicht gefunden.
postgres (PostgreSQL) 9.6.1
$ postgres -V | awk '{print $NF}'  # Letzte Spalte ist die Version.
9.6.1
$ postgres -V | egrep -o '[0-9]{1,}\.[0-9]{1,}'  # Haupt-Nebenversion
9.6

Wenn mehr als eine Installation von PostgreSQL vorhanden ist oder der Fehler "postgres: Befehl nicht gefunden" auftritt:

$ locate bin/postgres | xargs -i xargs -t '{}' -V  # xargs ist absichtlich zweimal vorhanden.
/usr/pgsql-9.3/bin/postgres -V 
postgres (PostgreSQL) 9.3.5
/usr/pgsql-9.6/bin/postgres -V 
postgres (PostgreSQL) 9.6.1

Wenn locate nicht hilft, versuchen Sie es mit find:

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

Obwohl auch postmaster anstelle von postgres verwendet werden kann, ist die Verwendung von postgres vorzuziehen, da postmaster ein veralteter Alias von postgres ist.

Clientversion:

Wenn relevant, als postgres einloggen.

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

Wenn mehr als eine Installation von PostgreSQL vorhanden ist:

$ locate bin/psql | xargs -i xargs -t '{}' -V  # xargs ist absichtlich zweimal vorhanden.
/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

Verwendung von SQL:

Serverversion:

=> 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

Wenn Sie neugierig sind, versuchen Sie => SHOW all;.

Clientversion:

Zu beachten ist, dass ein Shell-Befehl innerhalb von psql ausgeführt werden kann, um die Clientversion der psql-Ausführbaren im Pfad anzuzeigen. Beachten Sie, dass das ausgeführte psql potenziell unterschiedlich sein kann als das im Pfad.

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

82voto

simhumileco Punkte 26451

Wenn Sie CLI verwenden und ein postgres Benutzer sind, dann können Sie dies tun:

psql -c "SELECT version();"

Mögliche Ausgabe:

                                                         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)

51voto

Michel Milezzi Punkte 8397

Die akzeptierte Antwort ist großartig, aber wenn Sie programmatisch mit der PostgreSQL-Version interagieren müssen, ist es vielleicht besser, dies zu tun:

SELECT current_setting('server_version_num'); -- Gibt 90603 zurück (9.6.3)
-- Oder mit dem SHOW-Befehl:
SHOW server_version_num; -- Gibt auch 90603 zurück

Es wird die Serverversion als Ganzzahl zurückgeben. So wird beispielsweise die Serverversion im PostgreSQL-Quellcode getestet, z. B.:

/*
 * Dies ist ein C-Code aus der pg_dump-Quelle.
 * Es wird etwas tun, wenn die PostgreSQL-Remote-Version (Server) niedriger als 9.1.0 ist
 */
if (fout->remoteVersion < 90100)
    /*
     * Etwas tun...
     */  

Mehr Informationen hier und hier.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X