Versi PostgreSQL manakah yang saya jalankan?

1027

Saya berada di lingkungan perusahaan (menjalankan Debian Linux) dan tidak menginstalnya sendiri. Saya mengakses database menggunakan Navicat atau phpPgAdmin (jika itu membantu). Saya juga tidak memiliki akses shell ke server yang menjalankan database.

Sangat Tidak Teratur
sumber

Jawaban:

1646

Jalankan kueri ini dari PostgreSQL:

SELECT version();
Sangat Tidak Teratur
sumber
4
Tidak ada hasil dalam kasus saya di terminal pada Ubuntu
Timo
23
@Timo, ini adalah kueri untuk dijalankan melalui PostgreSQL. Ini bisa dilakukan melalui pgAdmin, atau mekanisme lain untuk menjalankan kueri. Apakah Anda mencoba menjalankannya dari shell Ubuntu? (ini tidak akan berhasil)
Sangat tidak teratur
41
Ini juga dapat dijalankan dari baris perintah denganpsql -c 'SELECT version();'
Aaron Lelevier
3
Anda dapat menjalankan langsung dari bash yang menentukan postgres db sebagai berikut:psql postgres -c 'SELECT version();'
thathashd
22
@ Frank H. Menggunakan: sudo -u postgres psql postgres -c 'SELECT version()' | grep PostgreSQLseharusnya membuat Anda melewati "peran 'nama pengguna' tidak ada".
Marcus Junius Brutus
550

Saya percaya ini yang Anda cari,

Versi server:

pg_config --version

Versi klien:

psql --version
Tim Büthe
sumber
1
Terima kasih! Ini berfungsi ketika akses shell tersedia. Sayangnya dalam kasus saya, saya tidak memiliki akses itu; Saya telah memperbarui pertanyaan.
Sangat tidak beraturan,
3
Terkadang versi klien adalah apa yang ingin Anda ketahui.
Trejkaz
12
Seperti yang dicatat Frank, ini bisa menipu. psql akan terhubung ke proses basis data postmaster / postgres apa pun yang sedang berjalan dan mesin basis data mungkin bukan versi yang sama dengan perintah psql.
Ben Roberts
2
pg_config --versionbisa menyesatkan, misalnya jika Anda memutakhirkan server Ubuntu dan tidak menjalankan pg_upgradecluster, pg_config akan menampilkan versi baru dan bukan versi yang masih Anda gunakan.
Marius Gedminas
hanya karya ini untuk saya: pg_config --version Perintah: psql --versiontidak bekerja, mengeluh untuk ini: dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib Referenced from: /usr/local/bin/psql Reason: image not found
rld
217

Menggunakan CLI:

Versi server:

$ 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

Jika memiliki lebih dari satu instalasi PostgreSQL, atau jika mendapat " postgres: command not found" kesalahan:

$ 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

Jika locatetidak membantu, coba 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

Meskipun postmasterdapat juga digunakan sebagai pengganti postgres, penggunaan postgreslebih disukai karena postmasteralias yang sudah tidak digunakan postgres.

Versi klien:

Sebagai relevan, login sebagaipostgres .

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

Jika memiliki lebih dari satu instalasi 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

Menggunakan SQL:

Versi server:

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

Jika lebih penasaran, coba => SHOW all;.

Versi klien:

Untuk apa nilainya, perintah shell dapat dijalankan di dalam psqluntuk menunjukkan versi klien dari psqlexecutable di path. Perhatikan bahwa menjalankan psqlberpotensi berbeda dari yang ada di jalur.

=> \! psql -V
psql (PostgreSQL) 9.2.9
Acumenus
sumber
12
Terima kasih !, SHOW server_version;script ini sangat berguna untuk menghindari keharusan mengurai dalam string panjang SELECT version();.
vaab
Terima kasih banyak. Orang tidak menyadari bahwa untuk mengeluarkan perintah SQL Anda harus tahu setidaknya satu peran untuk terhubung ke database. Tetapi dengan postgres -V Anda tidak perlu tahu untuk terhubung ke database untuk mengetahui versinya.
ychaouche
Satu baris di CLI asumsi akses superuser: psql postgres -c "SHOW server_version" -t -A. -tmenghapus header, -Amenghapus spasi keselarasan.
Pocketsand
Terima kasih untuk SHOW server_version_numkhususnya, yang berguna untuk ketidaksetaraan.
eswald
64

Jika Anda menggunakan CLI dan Anda adalah postgres pengguna , maka Anda dapat melakukan ini:

psql -c "SELECT version();"


Output yang mungkin :

                                                         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)
simhumileco
sumber
37

Jawaban yang diterima sangat bagus, tetapi jika Anda perlu berinteraksi secara terprogram dengan versi PostgreSQL mungkin lebih baik melakukannya:

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

Ini akan mengembalikan versi server sebagai integer. Ini adalah bagaimana versi server diuji dalam sumber PostgreSQL , misalnya:

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

Info lebih lanjut di sini dan di sini .

Michel Milezzi
sumber
36

Jalankan perintah

psql -V

Dimana

V harus dalam modal.

vipin cp
sumber
8
Itu adalah versi psql(klien), bukan versi server Postgres .
a_horse_with_no_name
Untuk pengulas : jika jawabannya salah tetapi merupakan jawaban (seperti komentar yang tersirat), jangan rekomendasikan penghapusan: downvote! Lihat, misalnya, " Anda salah melakukannya: Permohonan kewarasan dalam antrian Tulisan Kualitas Rendah " dan " Ketika jawaban menjawab pertanyaan yang salah, apakah itu Bukan Jawaban? ". Ini jawabannya. Anda mungkin tidak setuju dengan itu, tetapi ini merupakan upaya untuk menjawab pertanyaan.
Wai Ha Lee
19

di shell psql.exe, jalankan

\! psql -V
Diego Santa Cruz Mendezú
sumber
13
Ini akan memberinya versi klien postgre. Saya pikir OP meminta versi sql server.
SpKel
12

Cara sederhana adalah memeriksa versi dengan mengetik psql --versionterminal

Alex Trn
sumber
3
Perhatikan bahwa ini hanya akan memberi tahu Anda versi klien, yang sangat mungkin berbeda dengan server. Lihat jawaban @ simhumileco untuk cara kanonik.
jstr
12

Menggunakannya pgadmin4dapat dilihat dengan mengklik dua kali Server> server_name_here> tab Properti> Versi:

Versi 3.5:

pgadmin4 menunjukkan versi postgres.  Server> server_name> Properti> Versi

Versi 4.1, 4.5:

masukkan deskripsi gambar di sini

jmunsch
sumber
Jangan lihat itu. Menggunakan pgadmin 4 versi 4.1.
faintsignal
1
@faintsignal menambahkan tangkapan layar untuk pgadmin4 v4.1, lompatan versi itu terjadi cukup cepat.
jmunsch
1
Oh, kesalahanku. Saya pikir Anda mengklik kanan server, yang mengarah ke dialog "Properti" yang berbeda. Terima kasih!
faintsignal
9

Perintah pg_config akan melaporkan direktori tempat program PostgreSQL diinstal (--bindir), lokasi C menyertakan file (--includedir) dan perpustakaan kode objek (--libdir), dan versi PostgreSQL (--version) :

$ pg_config --version
PostgreSQL 9.3.6
Donato
sumber
8

Dalam hal ini

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

Semoga ini bisa membantu seseorang

Vikas Hardia
sumber
4

Jika Anda memiliki akses shell ke server (pertanyaannya menyebutkan op tidak memiliki, tetapi jika Anda punya,) pada sistem debian / ubuntu

sudo apt-cache policy postgresql

yang akan menampilkan versi yang diinstal,

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

di mana Installed: <version>adalah versi paket postgres yang diinstal.

Semuanya
sumber
1
Sebagai ide yang serupa, saya berlari $ yum listuntuk melihat bahwa paket Postgresql tertentu diinstal.
Patrick
ini bekerja dengan baik. Bisakah Anda sebutkan bagaimana meningkatkan dari 9,6 menjadi 10. di ubuntu 16.04
kRazzy R
4

gunakan VERSIONvariabel khusus

$psql -c "\echo :VERSION"
Frank Liu
sumber
2

Tidak tahu seberapa andal ini, tetapi Anda bisa mendapatkan dua token versi sepenuhnya secara otomatis:

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

Jadi Anda bisa membangun path ke binari:

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

Ganti 9.2 dengan perintah ini.

Aleksei Petrenko
sumber
psql --versionmengembalikan versi psqlklien, bukan versi server Postgres
a_horse_with_no_name
1

Untuk versi PgAdmin saat ini: 4,16 pada saat penulisan.

  1. Pilih DB yang versinya Anda butuhkan.
  2. Klik pada tab properti di panel kanan.

Lihat tangkapan layar di bawah ini: PGAdmin 4.16 menampilkan DB versi 10.10

Lefty G Balogh
sumber
0

Jika Select version()kembali dengan Memo coba gunakan perintah dengan cara ini:

Select version::char(100) 

atau

Select version::varchar(100)
aTa
sumber
2
select version()::varchar(100);bekerja untuk saya, tetapi sama denganversion()
isaaclw