Phiên bản nào của PostgreSQL tôi đang chạy?


1027

Tôi đang ở trong môi trường doanh nghiệp (chạy Debian Linux) và không tự cài đặt nó. Tôi truy cập cơ sở dữ liệu bằng Navicat hoặc phpPgAdmin (nếu điều đó có ích). Tôi cũng không có quyền truy cập shell vào máy chủ đang chạy cơ sở dữ liệu.

Câu trả lời:


1646

Chạy truy vấn này từ PostgreSQL:

SELECT version();

4
Không có kết quả nào trong trường hợp của tôi trong thiết bị đầu cuối trên Ubuntu
Timo

23
@Timo, đây là một truy vấn được chạy qua PostgreSQL. Điều này có thể được thực hiện thông qua pgAdmin hoặc bất kỳ cơ chế nào khác để chạy truy vấn. Bạn đã cố chạy nó từ shell Ubuntu chưa? (điều này sẽ không hoạt động)
Rất bất thường

41
Điều này cũng có thể được chạy từ dòng lệnh vớipsql -c 'SELECT version();'
Aaron Lelevier

3
Bạn có thể chạy trực tiếp từ bash chỉ định db postgres như sau:psql postgres -c 'SELECT version();'
thathashd

22
@Frank H. Sử dụng: sudo -u postgres psql postgres -c 'SELECT version()' | grep PostgreSQLsẽ giúp bạn vượt qua "vai trò 'tên người dùng' không tồn tại".
Marcus Junius Brutus

550

Tôi tin rằng đây là những gì bạn đang tìm kiếm,

Phiên bản máy chủ:

pg_config --version

Phiên bản máy khách:

psql --version

1
Cảm ơn! Điều này hoạt động khi truy cập shell có sẵn. Thật không may trong trường hợp của tôi, tôi không có quyền truy cập đó; Tôi đã cập nhật câu hỏi.
Rất bất thường

3
Đôi khi phiên bản máy khách là những gì bạn muốn biết anyway.
Trejkaz

12
Như Frank lưu ý, điều này có thể lừa dối. psql sẽ kết nối với bất cứ quy trình cơ sở dữ liệu postmaster / postgres nào đang chạy và công cụ cơ sở dữ liệu có thể không giống với phiên bản của lệnh psql.
Ben Roberts

2
pg_config --versioncó thể gây hiểu lầm, ví dụ: nếu bạn nâng cấp máy chủ Ubuntu và không chạy pg_upgradecluster, pg_config sẽ hiển thị phiên bản mới thay vì phiên bản bạn vẫn đang sử dụng.
Marius Gedminas

Chỉ điều này hoạt động với tôi: pg_config --version Lệnh: psql --versionkhông hoạt động, phàn nàn về điều này: dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib Referenced from: /usr/local/bin/psql Reason: image not found
rld

217

Sử dụng CLI:

Phiên bản máy chủ:

$ 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

Nếu có nhiều hơn một lần cài đặt PostgreSQL hoặc nếu gặp postgres: command not foundlỗi "":

$ 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

Nếu locatekhông giúp được, hãy thử 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

Mặc dù postmastercũng có thể được sử dụng thay vì postgres, sử dụng postgreslà tốt hơn vì postmasterlà bí danh không dùng nữa postgres.

Phiên bản máy khách:

Khi có liên quan, đăng nhập nhưpostgres .

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

Nếu có nhiều hơn một lần cài đặt 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

Sử dụng SQL:

Phiên bản máy chủ:

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

Nếu tò mò hơn, hãy thử => SHOW all;.

Phiên bản máy khách:

Đối với giá trị của nó, một lệnh shell có thể được thực thi bên trong psqlđể hiển thị phiên bản máy khách của psqltệp thực thi trong đường dẫn. Lưu ý rằng việc chạy psqlcó thể có khả năng khác với chạy trong đường dẫn.

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

12
Cảm ơn bạn!, SHOW server_version;Rất tiện dụng trong các kịch bản để tránh phải phân tích cú pháp trong chuỗi dài SELECT version();.
vaab

Cảm ơn rất nhiều. Mọi người không nhận ra rằng để ban hành các lệnh SQL, bạn phải biết ít nhất một vai trò để kết nối với cơ sở dữ liệu. Nhưng với postgres -V bạn không cần phải kết nối với cơ sở dữ liệu để biết phiên bản của nó.
ychaouche

Một dòng trong CLI giả sử truy cập superuser : psql postgres -c "SHOW server_version" -t -A. -tloại bỏ các tiêu đề, -Aloại bỏ khoảng trắng căn chỉnh.
Pocketsand

Cảm ơn bạn SHOW server_version_numđặc biệt, rất hữu ích cho sự bất bình đẳng.
eswald

64

Nếu bạn đang sử dụng CLI và bạn là postgres người dùng , thì bạn có thể làm điều này:

psql -c "SELECT version();"


Sản lượng có thể :

                                                         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)

37

Câu trả lời được chấp nhận là rất tốt, nhưng nếu bạn cần tương tác theo chương trình với phiên bản PostgreSQL thì có lẽ tốt hơn nên làm:

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

Nó sẽ trả về phiên bản máy chủ dưới dạng một số nguyên. Đây là cách phiên bản máy chủ được kiểm tra trong nguồn PostgreSQL , ví dụ:

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

Thêm thông tin ở đâyở đây .


36

Thực thi lệnh

psql -V

Ở đâu

V phải có vốn.


8
Đó là psqlphiên bản (máy khách), không phải phiên bản của máy chủ Postgres .
a_horse_with_no_name

Đối với người đánh giá : nếu câu trả lời sai nhưng là câu trả lời (như nhận xét ngụ ý), không nên xóa: downvote! Xem, ví dụ: " Bạn đang làm sai: Một lời biện hộ cho sự tỉnh táo trong hàng đợi Bài viết chất lượng thấp " và " Khi một câu trả lời trả lời sai câu hỏi, đó có phải là Câu trả lời không? ". Đây là một câu trả lời. Bạn có thể không đồng ý với nó, nhưng đó là một nỗ lực để trả lời câu hỏi.
Wai Ha Lee

19

trong shell psql.exe, thực thi

\! psql -V

13
Điều này sẽ cung cấp cho anh ta phiên bản của khách hàng postgre. Tôi mỏng rằng OP đang yêu cầu phiên bản máy chủ sql.
SpKel

12

Một cách đơn giản là kiểm tra phiên bản bằng cách gõ psql --versionvào terminal


3
Lưu ý rằng điều này sẽ chỉ cho bạn biết phiên bản máy khách, có thể hoàn toàn khác với máy chủ. Xem câu trả lời của @ simhumileco cho cách hợp quy.
22 giờ

12

Sử dụng pgadmin4nó có thể được nhìn thấy bằng cách nhấp đúp vào Máy chủ> server_name_here> tab Thuộc tính> Phiên bản:

Phiên bản 3.5:

pgadmin4 hiển thị phiên bản postgres.  Máy chủ> server_name> Thuộc tính> Phiên bản

Phiên bản 4.1, 4.5:

nhập mô tả hình ảnh ở đây


Đừng nhìn thấy nó. Sử dụng pgadmin 4 phiên bản 4.1.
ngất xỉu

1
@faintsignal đã thêm ảnh chụp màn hình cho pgadmin4 v4.1, bước nhảy phiên bản đó xảy ra khá nhanh.
jmunsch

1
Ôi, lỗi của tôi. Tôi nghĩ rằng bạn đã nhấp chuột phải vào máy chủ, dẫn đến hộp thoại "Thuộc tính" khác. Cảm ơn!
ngất xỉu

9

Lệnh pg_config sẽ báo cáo thư mục nơi các chương trình PostgreSQL được cài đặt (--bindir), vị trí của C bao gồm các tệp (--includedir) và thư viện mã đối tượng (--libdir) và phiên bản PostgreQuery (--version) :

$ pg_config --version
PostgreSQL 9.3.6

8

Trong trường hợp của tôi

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

Hy vọng nó sẽ giúp được ai đó


4

Nếu bạn có quyền truy cập shell vào máy chủ (câu hỏi đề cập op không có, nhưng trong trường hợp bạn có,) trên hệ thống debian / ub Ubuntu

sudo apt-cache policy postgresql

Phiên bản nào sẽ xuất ra

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

trong đó Installed: <version>phiên bản gói postgres được cài đặt.


1
Như một ý tưởng tương tự, tôi đã chạy $ yum listđể xem một số gói Postgresql đã được cài đặt.
Patrick

cái này hoạt động tốt Bạn có thể vui lòng nêu cách nâng cấp từ 9.6 lên 10. trên Ubuntu 16.04
kRazzy R

4

sử dụng VERSIONbiến đặc biệt

$psql -c "\echo :VERSION"

2

Không biết mức độ tin cậy của nó, nhưng bạn có thể nhận được hai mã thông báo phiên bản hoàn toàn tự động:

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

Vì vậy, bạn có thể xây dựng đường dẫn đến nhị phân:

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

Chỉ cần thay thế 9.2 bằng lệnh này.


psql --versiontrả về phiên bản của psqlmáy khách, không phải phiên bản của máy chủ Postgres
a_horse_with_no_name

1

Đối với phiên bản hiện tại của PGAdmin: 4.16 tại thời điểm viết.

  1. Chọn DB có phiên bản bạn cần.
  2. Nhấp vào tab thuộc tính trong khung bên phải.

Xem ảnh chụp màn hình bên dưới: PGAdmin 4.16 hiển thị DB phiên bản 10.10


0

Nếu Select version()trả về với Ghi nhớ, hãy thử sử dụng lệnh theo cách này:

Select version::char(100) 

hoặc là

Select version::varchar(100)

2
select version()::varchar(100);làm việc cho tôi, nhưng cũng giống nhưversion()
isaaclw
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.