Welche Version von PostgreSQL verwende ich?


1026

Ich bin in einer Unternehmensumgebung (unter Debian Linux) und habe es nicht selbst installiert. Ich greife mit Navicat oder phpPgAdmin auf die Datenbanken zu (wenn das hilft). Ich habe auch keinen Shell-Zugriff auf den Server, auf dem die Datenbank ausgeführt wird.

Antworten:


1645

Führen Sie diese Abfrage von PostgreSQL aus:

SELECT version();

4
Kein Ergebnis in meinem Fall im Terminal auf Ubuntu
Timo

22
@ Timo, dies ist eine Abfrage, die über PostgreSQL ausgeführt werden soll. Dies kann über pgAdmin oder einen anderen Mechanismus zum Ausführen einer Abfrage erfolgen. Haben Sie versucht, es von einer Ubuntu-Shell aus auszuführen? (das wird nicht funktionieren)
Sehr unregelmäßig

41
Dies kann auch von der Kommandozeile mitpsql -c 'SELECT version();'
Aaron Lelevier

3
Sie können direkt von der Bash laufen und die Postgres-Datenbank wie folgt psql postgres -c 'SELECT version();'
angeben

22
@Frank H. Verwenden von: sudo -u postgres psql postgres -c 'SELECT version()' | grep PostgreSQLsollte Sie über "Rolle 'Benutzername' existiert nicht" bringen.
Marcus Junius Brutus

550

Ich glaube, das ist es, wonach Sie suchen.

Serverversion:

pg_config --version

Client-Version:

psql --version

1
Vielen Dank! Dies funktioniert, wenn Shell-Zugriff verfügbar ist. Leider habe ich in meinem Fall diesen Zugang nicht; Ich habe die Frage aktualisiert.
Sehr unregelmäßig

3
Manchmal ist die Client-Version sowieso das, was Sie wissen möchten.
Trejkaz

12
Wie Frank bemerkt, kann dies täuschen. psql stellt eine Verbindung zu dem Postmaster / Postgres-Datenbankprozess her, und das Datenbankmodul hat möglicherweise nicht die gleiche Version wie der Befehl psql.
Ben Roberts

2
pg_config --versionpg_upgradeclusterDies könnte irreführend sein, z. B. wenn Sie einen Ubuntu-Server aktualisieren und nicht ausführen , zeigt pg_config die neue Version anstelle der noch verwendeten an.
Marius Gedminas

Nur das funktioniert für mich: pg_config --version Der Befehl: psql --versionfunktioniert nicht, beschwert sich dafür: dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib Referenced from: /usr/local/bin/psql Reason: image not found
16.

217

Verwenden der CLI:

Serverversion:

$ 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

Wenn Sie mehr als eine Installation von PostgreSQL haben oder den postgres: command not foundFehler " " erhalten:

$ 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

Wenn locatedies nicht hilft, versuchen Sie 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

Obwohl postmasterauch anstelle von verwendet werden kann postgres, ist die Verwendung postgresvorzuziehen, da postmasteres sich um einen veralteten Alias ​​von handelt postgres.

Client-Version:

Melden Sie sich entsprechend anpostgres .

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

Wenn Sie mehr als eine Installation von PostgreSQL haben:

$ 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

Verwenden 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 neugieriger sind, versuchen Sie es => SHOW all;.

Client-Version:

Für das, was es wert ist, kann ein Shell-Befehl ausgeführt werden psql, um die Client-Version der psqlausführbaren Datei im Pfad anzuzeigen. Beachten Sie, dass die Ausführung psqlmöglicherweise von der im Pfad abweichen kann.

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

12
Vielen Dank !, Das SHOW server_version;ist sehr praktisch in Skripten, um zu vermeiden, dass Sie die lange Zeichenfolge von analysieren müssen SELECT version();.
Vaab

Vielen Dank. Die Leute wissen nicht, dass Sie für die Ausgabe von SQL-Befehlen mindestens eine Rolle kennen müssen, um eine Verbindung zur Datenbank herzustellen. Bei postgres -V müssen Sie jedoch keine Verbindung zur Datenbank herstellen, um deren Version zu ermitteln.
Ychaouche

Eine Zeile in der CLI setzt Superuser-Zugriff voraus : psql postgres -c "SHOW server_version" -t -A. -tEntfernt Header, -Aentfernt Ausrichtungs-Leerzeichen.
Taschen und

Vielen Dank SHOW server_version_numinsbesondere für das, was für Ungleichheiten praktisch ist.
Eswald

64

Wenn Sie CLI verwenden und postgres Benutzer sind , können Sie Folgendes 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)

37

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

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

Die Serverversion wird als Ganzzahl zurückgegeben. So wird die Serverversion in der PostgreSQL-Quelle getestet , z.

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

Mehr Infos hier und hier .


36

Befehl ausführen

psql -V

Wo

V muss im Kapital sein.


8
Dies ist die psql(Client-) Version, nicht die Version des Postgres- Servers .
a_horse_with_no_name

Um Rezensenten : Wenn die Antwort falsch ist , aber eine Antwort (wie der Kommentar schon sagt), nicht Löschen empfehlen: downvote! Siehe zum Beispiel " Sie machen es falsch: Ein Plädoyer für Vernunft in der Warteschlange für Posts mit geringer Qualität " und " Wenn eine Antwort die falsche Frage beantwortet, ist es keine Antwort? ". Dies ist eine Antwort. Sie sind vielleicht nicht damit einverstanden, aber es ist ein Versuch, die Frage zu beantworten.
Wai Ha Lee

19

Führen Sie in der Shell psql.exe aus

\! psql -V

13
Dies gibt ihm die Version des Postgre-Clients. Ich denke, dass OP nach der SQL Server-Version fragt.
SpKel

12

Eine einfache Möglichkeit besteht darin, die Version durch Eingabe psql --versiondes Terminals zu überprüfen


3
Beachten Sie, dass hier nur die Client-Version angezeigt wird, die möglicherweise vom Server abweicht. Siehe @ simhumilecos Antwort für den kanonischen Weg.
20.

12

Die Verwendung pgadmin4kann durch Doppelklicken auf Server> Servername_Hier> Registerkarte Eigenschaften> Version angezeigt werden:

Version 3.5:

pgadmin4 show postgres version.  Server> Servername> Eigenschaften> Version

Version 4.1, 4.5:

Geben Sie hier die Bildbeschreibung ein


Sieh es nicht. Verwenden von pgadmin 4 Version 4.1.
Ohnmachtssignal

1
@faintsignal hat einen Screenshot für pgadmin4 v4.1 hinzugefügt, der Versionssprung ist ziemlich schnell gegangen.
jmunsch

1
Oh, mein Fehler. Ich dachte, Sie klicken mit der rechten Maustaste auf den Server, was zu einem anderen Dialogfeld "Eigenschaften" führt. Vielen Dank!
Ohnmachtssignal

9

Der Befehl pg_config gibt das Verzeichnis an, in dem die PostgreSQL-Programme installiert sind (--bindir), den Speicherort von C include-Dateien (--includedir) und Objektcodebibliotheken (--libdir) sowie die Version von PostgreSQL (--version). ::

$ pg_config --version
PostgreSQL 9.3.6

8

In meinem Fall

$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)

Hoffe es wird jemandem helfen


4

Wenn Sie Shell-Zugriff auf den Server haben (in der Frage wird erwähnt, dass op nicht vorhanden ist, aber falls vorhanden), auf einem Debian / Ubuntu-System

sudo apt-cache policy postgresql

welches die installierte Version ausgeben wird,

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

Dabei Installed: <version>ist die installierte Postgres-Paketversion.


1
Als ähnliche Idee habe ich festgestellt $ yum list, dass bestimmte Postgresql-Pakete installiert wurden.
Patrick

das funktioniert gut. Könnten Sie bitte
angeben,

4

Verwenden Sie eine VERSIONspezielle Variable

$psql -c "\echo :VERSION"

2

Ich weiß nicht, wie zuverlässig dies ist, aber Sie können zwei Versions-Token vollautomatisch erhalten:

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

So können Sie Pfade zu Binärdateien erstellen:

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

Ersetzen Sie einfach 9.2 durch diesen Befehl.


psql --versionGibt die Version des psqlClients zurück, nicht die Version des Postgres-Servers
a_horse_with_no_name

1

Für die aktuelle Version von PgAdmin: 4.16 zum Zeitpunkt des Schreibens.

  1. Wählen Sie die Datenbank aus, deren Version Sie benötigen.
  2. Klicken Sie im rechten Bereich auf die Registerkarte Eigenschaften.

Siehe Screenshot unten: PGAdmin 4.16 zeigt DB Version 10.10


0

Wenn Sie Select version()mit Memo zurückkehren, verwenden Sie den folgenden Befehl:

Select version::char(100) 

oder

Select version::varchar(100)

2
select version()::varchar(100);arbeitete für mich, war aber das gleiche wieversion()
isaaclw
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.