BOTH PostgreSQL sunucularının kurulu olması gerektiğinde pg_dump ile “sunucu sürümü uyumsuzluğunu” nasıl çözerim?


13

Bilgisayarıma iki PostgreSQL sunucusu kurdum. Biri 9.1 ve diğeri 9.3. Her iki sunucuya da ihtiyacım var.

Ancak pg_dump çalıştırdığınızda, bir sürüm uyuşmazlığı hatası alıyorum:

server version: 9.3.6; pg_dump version: 9.1.15
pg_dump: aborting because of server version mismatch

Nasıl çözebilirim? (Her iki sürüm de kaldırılamıyor - önce 9.1 ve 9.3 aylarını kurdum - her iki veritabanı sunucusuna da ihtiyacım var ).


9.3 sürümünü açıkça çalıştırın pg_dump. Her ikisi de yüklü, ancak yalnızca bir tanesi varsayılan. update-alternativesYollara bakın veya dpkg -Lnerede olduklarını görmek için postgresql istemci paketi. Size kendimi göstermek için bir Ubuntu kutusuna anında erişiminiz yok.
Craig Ringer

Olumsuz. Pg_dump komutu başka bir uygulamadan çalıştırılıyor.
Luis Masuelli

PATHUygulamanın çalıştığı ortam değişkenini değiştirmeniz gerekir .
Craig Ringer

Ben de aynı problemi yaşadım. PostgreSQL apt deposu üzerinden kurmak zorunda kaldım: askubuntu.com/a/831293/448857
neoneye

Yanıtlar:


16

TL; DR : Her iki PostgreSQL örneği de Ubuntu paketleri tarafından yönetiliyorsa (olması gerektiği gibi), --clusteryedeklenecek PostgreSQL örneğini seçme seçeneğini kullanın ve pg_dump dosyasının karşılık gelen sürümünü otomatik olarak seçecektir:

pg_dump --cluster 9.1/main [other pg_dump options]

veya

pg_dump --cluster 9.3/main [other pg_dump options].

mainyalnızca varsayılan bir değerdir, sütunda pg_lsclustersgerçek adlarınızı görmek için çalıştırın Cluster.

Nasıl çalışır: Ubuntu paketleri tarafından yüklendiği gibi /usr/bin/pg_dump, aslında /usr/share/postgresql-common/pg_wrapperamacı doğru örneği seçmek ve ilgili ikili dosyayı çalıştırmak olan bir yumuşak bağlantıdır . --clusterStok PostgreSQL komutlarında mevcut değil, bu birden çok sürüm / çoklu yol sorununu ele almak için tasarlanmış bir Debian / Ubuntu ekidir.

Bu aynıdır psql, createdb, createuservb yaklaşık 18 postgres komutları içinde /usr/binfiilen tarafından yönetilir pg_wrapper.

Daha fazla bilgi için bkz. Man pg_wrapper .


sürüm / main ne için? ana nedir?
Alexander Mills

1
@AlexanderMills: version= postgresql'in ana sürümü ve main= kümenin varsayılan adı. Pg_lsclusters ve pg_wrapper sayfalarına bakın.
Daniel Vérité

7

Kullanabilirsiniz:

sudo find / -name pg_dump

pg_dumpbenim durumumda sürümlerini bulmak için :/usr/pgsql-9.6/bin/pg_dump

bundan sonra yapabiliriz:

sudo ln -sfn /usr/pgsql-9.6/bin/pg_dump /usr/bin/pg_dump

ihtiyacımız olanı güncellemek için

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.