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.
Antworten
Zu viele Anzeigen?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
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)
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...
*/
- See previous answers
- Weitere Antworten anzeigen