Ich bin in einer Unternehmensumgebung (mit 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.
Führen Sie diese Abfrage von PostgreSQL aus:
SELECT version();
Ich glaube, das ist was du suchst,
Serverversion:
pg_config --version
Client-Version:
psql --version
$ 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 PostgreSQL-Installation haben oder den Fehler "postgres: command not found
" 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 locate
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 postmaster
auch anstelle von postgres
verwendet werden kann, ist die Verwendung von postgres
vorzuziehen, da postmaster
ein veralteter Alias von postgres
ist.
Wie relevant, Login als postgres
.
$ 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
=> 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 mit => SHOW all;
.
Ein Shell-Befehl kann in psql
ausgeführt werden, um die Client-Version der ausführbaren Datei psql
im Pfad anzuzeigen. Beachten Sie, dass sich die Ausführung von psql
möglicherweise von der im Pfad unterscheidet.
=> \! psql -V
psql (PostgreSQL) 9.2.9
Befehl ausführen
psql -V
Wo
V muss in Kapital sein.
Wenn Sie CLI verwenden und ein postgres
Benutzer sind, können Sie dies tun:
psql -c "SELECT version();"
Möglich 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)
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 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...
*/
führen Sie in Shell psql.exe aus
\! psql -V
Eine einfache Möglichkeit besteht darin, die Version zu überprüfen, indem Sie im Terminal psql --version
eingeben
Der Befehl pg_config gibt das Verzeichnis an, in dem die PostgreSQL-Programme installiert sind (--bindir), den Speicherort der C-Include-Dateien (--includedir) und der Objektcode-Bibliotheken (--libdir) sowie die Version von PostgreSQL (--version). :
$ pg_config --version
PostgreSQL 9.3.6
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
Wenn Sie Shell-Zugriff auf den Server haben (die Frage erwähnt op nicht, aber für den Fall, dass Sie haben), auf einem Debian/Ubuntu-System
Sudo apt-cache policy postgresql
welches die installierte Version ausgibt,
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 ist Installed: <version>
die installierte Postgres-Paketversion.
Ich weiß nicht, wie zuverlässig das ist, aber Sie können zwei Token der Version 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 mit diesem Befehl.
Wenn Select version()
mit Memo zurückkehrt, verwenden Sie den Befehl folgendermaßen:
Select version::char(100)
oder
Select version::varchar(100)