어떤 버전의 PostgreSQL을 실행하고 있습니까?


1025

회사 환경 (Debian Linux를 실행 중)에 있고 직접 설치하지 않았습니다. Navicat 또는 phpPgAdmin (도움이된다면)을 사용하여 데이터베이스에 액세스합니다. 또한 데이터베이스를 실행하는 서버에 대한 쉘 액세스 권한이 없습니다.

답변:


1644

PostgreSQL에서이 쿼리를 실행하십시오.

SELECT version();

4
우분투 터미널에서 사건이 발생하지 않음
Timo

22
@Timo, 이것은 PostgreSQL을 통해 실행되는 쿼리입니다. 이것은 pgAdmin 또는 쿼리 실행을위한 다른 메커니즘을 통해 수행 할 수 있습니다. 우분투 쉘에서 실행하려고 했습니까? (이 작동하지 않습니다)
매우 불규칙한

41
이것은 또한 명령 줄에서 실행할 수 있습니다psql -c 'SELECT version();'
Aaron Lelevier

3
다음과 같이 postgres db를 지정하여 bash에서 직접 실행할 수 있습니다.psql postgres -c 'SELECT version();'
thathashd

22
@Frank H. Using : sudo -u postgres psql postgres -c 'SELECT version()' | grep PostgreSQL"역할 '사용자 이름'이 존재하지 않습니다."
마커스 주니 우스 브루터스

550

나는 이것이 당신이 찾고있는 것이라고 믿습니다.

서버 버전 :

pg_config --version

클라이언트 버전 :

psql --version

1
감사! 이것은 쉘 액세스가 사용 가능한 경우에 작동합니다. 불행히도 제 경우에는 그런 접근 권한이 없습니다. 질문을 업데이트했습니다.
매우 불규칙

3
때때로 클라이언트 버전은 당신이 알고 싶은 것입니다.
Trejkaz

12
Frank가 지적했듯이 이것은 속이는 것일 수 있습니다. psql은 실행중인 postmaster / postgres 데이터베이스 프로세스에 연결되며 데이터베이스 엔진은 psql 명령과 동일한 버전이 아닐 수 있습니다.
Ben Roberts

2
pg_config --version예를 들어 Ubuntu 서버를 업그레이드하고 실행하지 않으면 pg_upgradeclusterpg_config는 여전히 사용중인 버전 대신 새 버전을 표시합니다.
Marius Gedminas

이게 나를 위해 작동합니다 : 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
rld

217

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.

클라이언트 버전 :

관련하여로 로그인하십시오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의 클라이언트 버전을 보여주기 위해 쉘 명령을 실행할 수 있습니다 psql. 달리기 psql는 경로 상의 달리기 와 다를 수 있습니다.

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

12
감사합니다! SHOW server_version;는의 긴 문자열을 구문 분석하지 않아도 스크립트에서 매우 편리합니다 SELECT version();.
vaab

고마워 사람들은 SQL 명령을 실행하기 위해 데이터베이스에 연결하기 위해 최소한 하나의 역할을 알아야한다는 것을 인식하지 못합니다. 그러나 postgres -V를 사용하면 데이터베이스에 연결하여 버전을 알 필요가 없습니다.
ychaouche

CLI에서 한 줄은 수퍼 유저 액세스를 가정 : psql postgres -c "SHOW server_version" -t -A. -t헤더를 -A제거하고 정렬 공백을 제거합니다.
Pocketsand

SHOW server_version_num불평등에 유용한 특히 감사합니다 .
eswald

63

CLI를 사용 하고 있고 postgres user 인 경우 다음을 수행 할 수 있습니다.

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)

37

허용되는 답변은 훌륭하지만 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...
     */  

여기여기에 더 많은 정보가 있습니다 .


36

실행 명령

psql -V

어디

V 는 대문자 여야합니다.


8
즉,이다 psql(클라이언트) 버전, 하지 포스트그레스의 버전 서버 .
a_horse_with_no_name

검토 : 대답은 잘못하지만 대답 경우 (주석이 암시하는 것처럼), 삭제를하지 않는 것이 좋습니다 : downvote을! 예를 들어, " 잘못하고 있습니다 : 저품질 게시물 대기열의 온전성에 대한 탄원 "및 " 답변이 잘못된 질문에 대답하면 대답이 아닙니까? "를 참조하십시오. 이것은 답변입니다. 당신은 그것에 동의하지 않을 수도 있지만, 질문에 대답하려는 시도입니다.
Wai Ha Lee


12

간단한 방법은 psql --version터미널 에 입력하여 버전을 확인하는 것입니다


3
이것은 클라이언트 버전 만 알려주며 서버와 다를 수 있습니다. 정식 방법은 @simhumileco의 답변을 참조하십시오.
jstr

12

사용 pgadmin4이 볼 수 있습니다 더블 클릭 서버> server_name_here> 속성 탭> 버전 :

버전 3.5 :

pgadmin4는 postgres 버전을 보여줍니다.  서버> server_name> 특성> 버전

버전 4.1, 4.5 :

여기에 이미지 설명을 입력하십시오


보지마 pgadmin 4 버전 4.1 사용.
faintsignal 2012 년

1
@faintsignal은 pgadmin4 v4.1의 스크린 샷을 추가했습니다.
jmunsch

1
오, 내 실수 서버를 마우스 오른쪽 버튼으로 클릭하고 다른 "속성"대화 상자가 나타납니다. 감사!
faintsignal

9

pg_config 명령은 PostgreSQL 프로그램이 설치된 디렉토리 (--bindir), C 포함 파일 위치 (--includedir) 및 객체 코드 라이브러리 (--libdir) 및 PostgreSQL 버전 (--version)을보고합니다. :

$ pg_config --version
PostgreSQL 9.3.6

8

나의 경우에는

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

누군가에게 도움이되기를 바랍니다.


4

데비안 / 우분투 시스템에서 서버에 쉘 액세스 권한이있는 경우 (질문에 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 패키지 버전입니다.


1
비슷한 생각으로 $ yum list특정 Postgresql 패키지가 설치되어 있음을 알았습니다 .
Patrick

이것은 잘 작동합니다. 우분투 16.04에서 9.6에서 10으로 업그레이드하는 방법을
알려주시겠습니까?


2

이것이 얼마나 안정적인지 모르지만 두 가지 버전의 토큰을 완전히 자동으로 얻을 수 있습니다.

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 --versionPostgres 서버 버전이 아닌psql 클라이언트 버전을 반환 합니다.
a_horse_with_no_name

1

현재 버전의 PgAdmin : 작성시 4.16.

  1. 버전이 필요한 DB를 선택하십시오.
  2. 오른쪽 창에서 속성 탭을 클릭하십시오.

아래 스크린 샷을 참조하십시오 : DB 버전 10.10을 보여주는 PGAdmin 4.16


0

Select version()메모와 함께 반환 되면 다음 과 같은 방법으로 명령을 사용해보십시오.

Select version::char(100) 

또는

Select version::varchar(100)

2
select version()::varchar(100);나를 위해 일했지만version()
isaaclw
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.