我正在运行哪个版本的PostgreSQL?

我在一个企业环境(运行Debian Linux),并没有自己安装。 我使用Navicat或phpPgAdmin访问数据库(如果有帮助)。 我也没有对运行数据库的服务器的shell访问权限。

从PostgreSQL运行这个查询:

SELECT version(); 

我相信这是你正在寻找的,

服务器版本:

 pg_config --version 

客户端版本:

 psql --version 

使用CLI:

服务器版本:

 $ 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 

如果有一个以上的PostgreSQL安装,或者如果得到“ postgres: command not found ”错误:

 $ 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 

如果locate ,请尝试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 

虽然postmaster也可以用来代替postgres ,但是最好使用postgres ,因为postmasterpostgres一个不推荐的别名。

客户端版本:

相关的, login为postgres

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

如果有多个PostgreSQL的安装:

 $ 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 

使用SQL:

服务器版本:

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

如果更好奇,试试=> SHOW all;

客户端版本:

值得一提的是,可以在psql执行shell命令来显示path中psql可执行文件的客户端版本。 请注意,正在运行的psql可能与path中的不同。

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

执行命令

 psql -V 

哪里

V必须在首都。

在我的情况

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

希望它能帮助别人

pg_config命令将报告安装PostgreSQL程序的目录(–bindir),C包含文件(–includedir)和目标代码库(–libdir)的位置以及PostgreSQL的版本(–version) :

 $ pg_config --version PostgreSQL 9.3.6 

被接受的答案是好的,但是如果你需要和PostgreSQL版本进行编程交互,那么最好这样做:

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

它将以整数forms返回服务器版本。 这是如何在PostgreSQL源码中testing服务器版本的,例如:

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

更多信息在这里和这里 。

在我的情况下,补充@ ABB的答案,这对我很好,如下所示:

 $ locate bin/postgres -- if not found, use "sudo updatedb" to update the index of locate command /usr/lib/postgresql/9.0/bin/postgres -- local found $ cd /usr/lib/postgresql/9.0/bin -- my local installation $ sudo ./postgres -V postgres (PostgreSQL) 9.0.23 

如果Select version()返回与备忘录尝试使用命令这种方式:

 Select version::char(100) 

要么

 Select version::varchar(100) 

不知道这是多么可靠,但你可以完全自动获得两个版本的令牌:

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

所以你可以build立到二进制文件的path:

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

用这个命令replace9.2。