我在一个企业环境中(运行Debian Linux),没有自己安装它。我使用Navicat或phpPgAdmin访问数据库(如果有帮助的话)。我也没有运行数据库的服务器的shell访问权。
当前回答
在shell psql.exe中执行
\! psql -V
其他回答
一个简单的方法是在终端中输入psql——version来检查版本
不知道这有多可靠,但你可以自动获得两个版本令牌:
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替换为此命令。
如果你在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包版本。
对我来说
$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)
希望它能帮助到一些人
公认的答案是很好的,但如果你需要与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...
*/
更多信息在这里和这里。
推荐文章
- 如何从另一个文件A中删除文件B中出现的行?
- 截断Postgres数据库中的所有表
- 对以制表符分隔的文件进行排序
- 什么是分片,为什么它很重要?
- 如何连接列在Postgres选择?
- 使用sudo时未找到命令
- 当有命令行参数时,如何使用GDB分析程序的核心转储文件?
- 数据库触发器是必要的吗?
- 如何强制从另一个SSH会话分离屏幕?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- 为什么我应该使用基于文档的数据库而不是关系数据库?
- 哪个更快/最好?SELECT *或SELECT columnn1, colum2, column3等
- Linux Bash中双&和分号有什么区别?
- 将varchar字段的类型更改为整数:"不能自动转换为整数类型"
- 将值从同一表中的一列复制到另一列