我正在运行哪个版本的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
,因为postmaster
是postgres
一个不推荐的别名。
客户端版本:
相关的, 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。