Saya menginstal dua server PostgreSQL di komputer saya. Satu adalah 9,1 dan yang lainnya 9,3. Saya perlu menginstal kedua server.
Ketika saya menjalankan pg_dump, saya mendapatkan kesalahan versi ketidakcocokan:
server version: 9.3.6; pg_dump version: 9.1.15
pg_dump: aborting because of server version mismatch
Bagaimana saya bisa menyelesaikannya? (Tidak dapat menghapus versi mana pun - saya memasang 9.1 terlebih dahulu dan 9.3 berbulan-bulan kemudian - saya perlu menginstal kedua server basis data).
postgresql
Luis Masuelli
sumber
sumber
pg_dump
. Keduanya diinstal, tetapi hanya satu yang default. Lihatupdate-alternatives
path, ataudpkg -L
paket klien postgresql untuk melihat di mana mereka. Tidak memiliki akses langsung ke kotak Ubuntu untuk menunjukkan kepada Anda sendiri.PATH
variabel lingkungan yang dijalankan aplikasi.Jawaban:
TL; DR : jika kedua instance PostgreSQL dikelola oleh paket Ubuntu (sebagaimana mestinya), cukup gunakan
--cluster
opsi untuk memilih instance PostgreSQL untuk dicadangkan, dan itu akan secara otomatis memilih versi pg_dump yang sesuai:pg_dump --cluster 9.1/main [other pg_dump options]
atau
pg_dump --cluster 9.3/main [other pg_dump options]
.main
hanyalah nilai default, jalankanpg_lsclusters
untuk melihat nama aktual Anda diCluster
kolom.Cara kerjanya: sebagaimana diinstal oleh paket Ubuntu,
/usr/bin/pg_dump
sebenarnya merupakan tautan lunak ke/usr/share/postgresql-common/pg_wrapper
, yang tujuannya tepat untuk memilih instance yang benar dan menjalankan biner yang sesuai.--cluster
tidak ada dalam perintah stock PostgreSQL, ini adalah tambahan Debian / Ubuntu yang dimaksudkan untuk mengatasi masalah beberapa versi / banyak jalur ini.Ini adalah sama untuk
psql
,createdb
,createuser
, dll sekitar 18 postgres perintah dalam/usr/bin
sebenarnya dikelola olehpg_wrapper
.Lihat man pg_wrapper untuk informasi lebih lanjut.
sumber
version
= versi utama postgresql danmain
= nama default cluster. Lihat halaman manual pg_lsclusters dan pg_wrapper.Kamu bisa menggunakan:
untuk menemukan versi Anda
pg_dump
dalam kasus saya:/usr/pgsql-9.6/bin/pg_dump
jadi selanjutnya yang bisa kita lakukan:
untuk memperbarui ke yang kita butuhkan
sumber