Answers:
从PostgreSQL运行以下查询:
SELECT version();
psql -c 'SELECT version();'
psql postgres -c 'SELECT version();'
sudo -u postgres psql postgres -c 'SELECT version()' | grep PostgreSQL
应该使您过去“角色'username'不存在”。
我相信这就是您想要的,
服务器版本:
pg_config --version
客户端版本:
psql --version
pg_config --version
可能会产生误导,例如,如果升级Ubuntu服务器并且不运行pg_upgradecluster
,pg_config将显示新版本,而不是您仍在使用的版本。
pg_config --version
psql --version
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib Referenced from: /usr/local/bin/psql Reason: image not found
$ 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
。
根据需要,以登录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
=> 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;
。
对于它的价值,可以在其中执行shell命令以在路径中psql
显示psql
可执行文件的客户端版本。请注意,运行psql
可能与路径中的运行不同。
=> \! psql -V
psql (PostgreSQL) 9.2.9
SHOW server_version;
脚本中的十分方便,可以避免不得不分析的长字符串SELECT version();
。
psql postgres -c "SHOW server_version" -t -A
。 -t
删除标题,-A
删除对齐空格。
SHOW server_version_num
特别感谢您,这对于不平等非常有用。
如果您使用的是CLI,并且是postgres
用户,则可以执行以下操作:
psql -c "SELECT version();"
可能的输出:
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)
可以接受的答案很好,但是如果您需要与PostgreSQL版本进行编程交互,则最好这样做:
SELECT current_setting('server_version_num'); -- Returns 90603 (9.6.3)
-- Or using SHOW command:
SHOW server_version_num; -- Returns 90603 too
它将以整数形式返回服务器版本。这是在PostgreSQL源中测试服务器版本的方式,例如:
/*
* 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...
*/
执行命令
psql -V
哪里
V必须大写。
psql
(客户端)版本,而不是 Postgres 服务器的版本。
就我而言
$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)
希望对别人有帮助
如果您可以在debian / ubuntu系统上对服务器进行shell访问(提到op的问题则没有,但是如果您有的话)
sudo apt-cache policy postgresql
它将输出安装的版本,
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
其中Installed: <version>
是已安装的postgres软件包版本。
$ yum list
查看已安装某些Postgresql软件包。
不知道这有多可靠,但是您可以完全自动获得两个版本的令牌:
psql --version 2>&1 | tail -1 | awk '{print $3}' | sed 's/\./ /g' | awk '{print $1 "." $2}'
因此,您可以构建二进制文件的路径:
/usr/lib/postgresql/9.2/bin/postgres
只需用此命令替换9.2。
psql --version
返回psql
客户端的版本,而不是 Postgres服务器的版本