Saya mencoba untuk membuang database Postgresql menggunakan alat pg_dump .
$ pg_dump books > books.out
Bagaimana saya mendapatkan kesalahan ini.
pg_dump: server version: 9.2.1; pg_dump version: 9.1.6
pg_dump: aborting because of server version mismatch
The --ignore-version
pilihan sekarang usang dan benar-benar tidak akan aa solusi untuk masalah saya bahkan jika itu telah bekerja.
Bagaimana cara meningkatkan pg_dump untuk mengatasi masalah ini?
postgresql
backup
pg-dump
postgresql-9.2
Chris Colla
sumber
sumber
Jawaban:
Anda dapat menginstal PostgreSQL 9.2.1 di
pg_dump
mesin klien atau cukup salin$PGHOME
dari mesin server PostgreSQL ke mesin klien. Perhatikan bahwa tidak perluinitdb
cluster baru di mesin klien.Setelah Anda selesai menginstal perangkat lunak 9.2.1, ingatlah untuk mengedit beberapa variabel lingkungan di
.bash_profile
file Anda .sumber
Saya mengalami ini saat menggunakan Heroku di Ubuntu, dan inilah cara saya memperbaikinya:
Tambahkan repositori apt PostgreSQL seperti yang dijelaskan di " Unduhan Linux (Ubuntu) ". (Ada halaman serupa untuk sistem operasi lain.)
Tingkatkan ke versi terbaru (9.3 untuk saya) dengan:
sudo apt-get install postgresql
Buat kembali tautan simbolis
/usr/bin
dengan:sudo ln -s /usr/lib/postgresql/9.3/bin/pg_dump /usr/bin/pg_dump --force
Nomor versi pada
/usr/lib/postgresql/...
jalur di atas harus cocok denganserver version
nomor pada kesalahan yang Anda terima. Jadi jika kesalahan Anda mengatakanpg_dump: server version: 9.9
,, maka tautkan ke/usr/lib/postgresql/9.9/...
.sumber
Periksa versi pg_dump yang diinstal:
Keluaran saya adalah:
Ada dua versi yang diinstal. Untuk memperbarui pg_dump dengan versi yang lebih baru:
sudo ln -s /usr/pgsql-9.3/bin/pg_dump /usr/bin/pg_dump --force
Ini akan membuat symlink ke versi yang lebih baru.
sumber
locate pg_dump
2>/dev/null
karena itu akan membuang aliran ERROR daripada mencetaknya ke konsol. Saya pikir orang ingin melihat kesalahan yang terjadi, kecuali beberapa kasus yang jarang terjadi. Misalnya, dalam kasus saya, ini mengingatkan saya bahwa saya tidak melakukan root sehingga gagal melihat beberapa direktori tempat versi pg_dump yang lebih baru diinstal. Secara umum, jangan hapus kesalahan.Mac memiliki
/usr/bin/pg_dump
perintah bawaan yang digunakan sebagai default.Dengan menginstal postgresql Anda mendapatkan biner lain di
/Library/PostgreSQL/<version>/bin/pg_dump
sumber
Anda cukup mencari
pg_dump
dan menggunakan jalur lengkap dalam perintahSekarang gunakan saja jalur dari versi yang diinginkan dalam perintah
sumber
sudo /usr/pgsql-<version>/bin/pg_dump <database-name> -U <username> -h localhost
Jika Anda menggunakan Ubuntu, Anda mungkin menginstal versi lama
postgresql-client
. Berdasarkan versi dalam pesan kesalahan Anda, solusinya adalah sebagai berikut:sudo apt-get remove postgresql-client-9.1 sudo apt-get install postgresql-client-9.2
sumber
Setiap kali Anda mengupgrade atau menginstal ulang versi baru PostgreSQL, versi terbaru
pg_dump
diinstal.Harus ada
PostgreSQL/bin
direktori di suatu tempat di sistem Anda, di bawah versi terbaru PostgreSQL yang telah Anda instal (9.2.1 terbaru) dan coba jalankanpg_dump
dari sana.sumber
Terminal.app
,find / -name pg_dump -type f 2>/dev/null
Untuk Mac dengan Homebrew. Saya mengalami masalah ini saat mengambil db dari Heroku. Saya telah memperbaikinya hanya dengan berjalan:
sumber
brew search postgres
untuk melihat semuanya.Untuk mereka yang menjalankan Postgres.app :
Tambahkan kode berikut ke Anda
.bash_profile
:export PATH=/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH
Mulai ulang terminal.
sumber
Di Ubuntu Anda cukup menambahkan repositori Apt terbaru dan kemudian menjalankan:
sudo apt-get install postgresql-client-11
sumber
Untuk pengguna mac, letakkan di bagian atas file .profile.
lalu lari
sumber
Seperti yang dijelaskan, ini karena postgresql Anda dalam versi lama -> perbarui Untuk Mac melalui homebrew:
brew tap petere/postgresql
,brew install <formula>
(misalnya:brew install petere/postgresql/postgresql-9.6
)Hapus surat pernyataan lama:
brew unlink postgresql
brew link -f postgresql-9.6
Jika terjadi kesalahan, jangan lupa untuk membaca dan mengikuti instruksi pembuatan bir di setiap langkah.
Lihat ini untuk lebih lanjut: https://github.com/petere/homebrew-postgresql
sumber
Jawaban alternatif yang menurut saya tidak dibahas orang lain.
Jika Anda menginstal beberapa kluster PG (seperti yang saya lakukan), Anda dapat melihatnya menggunakan
pg_lsclusters
.Anda harus dapat melihat versi dan cluster dari daftar yang ditampilkan.
Dari sana, Anda dapat melakukan ini:
pg_dump --cluster=9.6/main books > books.out
Jelas, ganti versi dan nama cluster dengan yang sesuai untuk keadaan Anda dari apa yang dikembalikan dengan
pg_lsclusters
memisahkan versi dan cluster dengan /. Ini menargetkan cluster tertentu yang ingin Anda jalankan.sumber
pg_dump
tidak mengerjakan salah satu cluster saya. Ternyata, itu menggunakan versi Postgresql default, ketika salah satu cluster saya ditingkatkan ke versi yang lebih baru. Menentukan cluster, memecahkan masalah.Jika Anda menginstal buruh pelabuhan, Anda dapat melakukan sesuatu seperti:
$ docker run postgres:9.2 pg_dump books > books.out
Itu akan mengunduh kontainer Docker dengan Postgres 9.2 di dalamnya, berjalan
pg_dump
di dalam kontainer, dan menulis hasilnya.sumber
Jawabannya terdengar konyol tetapi jika Anda mendapatkan kesalahan di atas dan ingin menjalankan pg_dump untuk versi sebelumnya, buka direktori bin postgres dan ketik
./pg_dump namaserver> out.sql ./ mengabaikan root dan mencari pg_dump di direktori saat ini
sumber
Bagi saya, masalah memperbarui
psql
apt-get
tidak menyelesaikan versi yang lebih baru, bahkan setelahnyaupdate
. Berikut ini berhasil.Ubuntu
Mulailah dengan mengimpor kunci GPG untuk paket PostgreSQL.
sudo apt-get install wget ca-certificates wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Sekarang tambahkan repositori ke sistem Anda.
Instal PostgreSQL di Ubuntu
sudo apt-get update sudo apt-get install postgresql postgresql-contrib
https://www.postgresql.org/download/linux/ubuntu/
sumber
** setelah menginstal versi postgres cocok (9.2) Buat tautan simbolik atau pintasan baru
** - di '/ usr / bin'
syntag is = sudo ln -s [path for use] [new shortcut name]
contoh
- cara memanggil: new_pg_dump -h 192.168.9.88 -U database postgres
sumber
Coba itu:
sumber
Jika database diinstal pada mesin yang berbeda, mungkin database tersebut memiliki versi pg_dump yang diinstal dengan benar. Ini berarti Anda dapat menjalankan perintah pg_dump dari jarak jauh dengan SSH:
ssh username@dbserver pg_dump books > books.out
Anda juga dapat menggunakan otentikasi kunci publik untuk eksekusi tanpa kata sandi. Langkah-langkah untuk mencapainya:
sumber
Nah, saya mengalami masalah yang sama karena saya menginstal dua versi postgress.
Cukup gunakan pg_dump yang tepat dan Anda tidak perlu mengubah apa pun, dalam kasus Anda:
sumber
Saya memiliki kesalahan yang sama dan inilah cara saya menyelesaikannya dalam kasus saya. Ini berarti versi postgresql Anda adalah 9.2.1 tetapi Anda telah memulai layanan postgresql 9.1.6.
Jika Anda berlari,
psql postgres
Anda akan melihat:psql (9.2.1, server 9.1.6)
Apa yang saya lakukan untuk mengatasi masalah ini adalah:
brew services stop [email protected]
brew services restart [email protected]
Sekarang jalankan
psql postgres
dan Anda harus memiliki:psql (9.2.1)
Anda juga dapat menjalankan
brew services list
untuk melihat status postgres Anda.sumber
Jika Anda menggunakan Heroku's Postgres.app, pg_dump (bersama dengan semua binari lainnya) masuk
/Applications/Postgres.app/Contents/MacOS/bin/
jadi dalam kasus itu
ln -s /Applications/Postgres.app/Contents/MacOS/bin/pg_dump /usr/local/bin/pg_dump
atau
ln -s /Applications/Postgres.app/Contents/MacOS/bin/* /usr/local/bin/.
untuk mengambil semuanya
sumber
Untuk Mac, gunakan
find / -name pg_dump -type f 2>/dev/null
temukan lokasi pg_dumpBagi saya, saya memiliki hasil sebagai berikut:
Jika Anda tidak ingin menggunakan
sudo ln -s new_pg_dump old_pg_dump --force
, cukup gunakan:Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump
untuk diganti denganpg_dump
di terminal AndaSebagai contoh:
Ini berhasil untuk saya!
sumber
Unduh versi postgres yang sesuai di sini:
https://www.postgresql.org/download/
Pastikan untuk menjalankan perintah berikut (URL postgresql.org/download akan menghasilkan URL spesifik untuk Anda gunakan; yang saya gunakan di bawah ini hanyalah contoh untuk centos 7) sebagai sudo:
sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install postgresql11-server
versi pg_dump Anda sekarang harus diperbarui, verifikasi dengan pg_dump -V
sumber
Pada skenario saya, versi produksi adalah 12, dan versi pengembangan saya adalah 11, memutakhirkan paket
postgresql-client-xx
sudah cukup untuk menyelesaikan insiden saya.Halaman web referensi: https://www.postgresql.org/download/linux/ubuntu/
sudo apt-get update && sudo apt-get -y upgrade postgresql-client
Satu hal yang menarik untuk ditunjukkan adalah bahwa setelah peningkatan versi sebelumnya tetap terpasang:
mlazo@mlazo-pc:~$ dpkg -l |grep -i postgresql-client ii postgresql-client-11 11.8-1.pgdg18.04+1 amd64 front-end programs for PostgreSQL 11 ii postgresql-client-12 12.4-1.pgdg18.04+1 amd64 front-end programs for PostgreSQL 12
Semoga pengalaman saya bisa membantu seseorang.
Salam pembuka,
sumber
Langkah pertama: lihat apakah postgres memiliki repositori dengan binari bawaan untuk versi yang Anda inginkan untuk OS Anda: https://www.postgresql.org/download/
Jika itu tidak berhasil (misalnya jika distro Anda ada tetapi tidak lagi didukung, maka binari yang benar tidak disediakan untuk itu), atau jika Anda hanya ingin langsung atau sumber dan tidak perlu khawatir tentang menambahkan remote repo, dll.
Yang saya lakukan adalah mengunduh sumber mentah postgres untuk versi yang diinginkan.
Untar itu, cd ke dalamnya, bangun
./configure && make
, lalu:postgresql-12.3 $ find . -name pg_dump ./src/bin/pg_dump/pg_dump $ ./src/bin/pg_dump/pg_dump unable to load libpg.so.5 # if it says this... $ find . -name libpg.so.5 $ export LD_LIBRARY_PATH=/your/path/to/the/shared/dir/of/above/file $ ./src/bin/pg_dump/pg_dump # works now
Sekarang Anda memiliki akses ke versi apa pun yang dibangun di atas kotak Anda. Yang mana saja.
sumber
Saya mengalami masalah serupa pada instalasi Fedora 17 saya. Inilah yang saya lakukan untuk mengatasi masalah tersebut
pg_dump
di/usr/bin/pg_dump
(sebagai root: "rm / usr / bin / pg_dump")Sekarang buat tautan simbolis dari instalasi postgresql
Sekali lagi sebagai root
ln -s /usr/pgsql-9.2/bin/pg_dump /usr/bin/pg_dump
Itu seharusnya berhasil
sumber
/usr/
(bukan/usr/local/
,/home/
atau/opt/
, di mana menghapus sesuatu umumnya OK) Anda benar - benar perlu menggunakan manajer paket -rpm
&yum
ataudpkg
danapt-get
atauaptitude
, tergantung distro. Copot paket denganrpm
atau ubahPATH
variabel lingkungan di Anda.bash_profile
sehingga versi yang lebih baru ditemukan terlebih dahulu. Jika Anda ragu tentang sesuatu yang berada di bawah manajemen paket, gunakanrpm -qf /path/to/file
(RPM) ataudpkg -S /path/to/file
(dpkg)