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.

Sehr unregelmäßig
quelle

Antworten:

1645

Führen Sie diese Abfrage von PostgreSQL aus:

SELECT version();
Sehr unregelmäßig
quelle
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
Tim Büthe
quelle
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
Scharfsinn
quelle
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)
simhumileco
quelle
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 .

Michel Milezzi
quelle
36

Befehl ausführen

psql -V

Wo

V muss im Kapital sein.

vipin cp
quelle
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
Diego Santa Cruz Mendezú
quelle
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

Alex Trn
quelle
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

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

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

Alles ist gut
quelle
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"
Frank Liu
quelle
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.

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

Lefty G Balogh
quelle
0

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

Select version::char(100) 

oder

Select version::varchar(100)
an einer
quelle
2
select version()::varchar(100);arbeitete für mich, war aber das gleiche wieversion()
isaaclw