phiên bản pg_dump không khớp trên Debian


8

Tôi đang chạy PostgreSQL trên Debian Không ổn định / Sid. Tôi đã có các phiên bản hiện tại (9,1) của postgresql, postgresql-client, postgresql-client-common(143) được cài đặt.

Vấn đề tôi gặp phải là cố gắng chạy pg_dump. Tôi đang gặp lỗi này:

pg_dump: server version: 9.1.9; pg_dump version: 9.0.6
pg_dump: aborting because of server version mismatch

Tôi dường như không thể tìm ra làm thế nào để có được một phiên bản mới hơn pg_dump. Nó dường như đến từ postgresql-client-commongói và tôi đã thử chạy apt-get --reinstalltrên nó, nhưng điều đó không mang lại cho tôi phiên bản mới hơn của pg_dump.

Làm thế nào để tôi làm việc xung quanh này? Hoặc tôi có thể tìm một gói với phiên bản mới hơn ở pg_dumpđâu?


Bạn nhận ra rằng đây là ngang bằng với khóa học vì bạn đang chạy Debian Sid? Nó không ổn định. Điều gì which pg_dumpcho bạn thấy? Chỉ cần xác nhận rằng trên thực tế đó là phiên bản đóng gói chứ không phải phiên bản khác.
slm

Yup, tôi đã kiểm tra điều đó. Nó đang hiển thị /usr/bin/pg_dump, và dpkg -S /usr/bin/pg_dumpcho tôi postgresql-client-common: /usr/bin/pg_dump.
supercheetah

Kiểm tra câu trả lời của tôi, xem nếu nó giúp.
slm

Câu trả lời:


3

Vài lựa chọn.

Tải xuống .deb 9.1 từ trang Postgres

Hãy xem trang này có tiêu đề: Tải xuống Linux (Debian) - PostgreSQL . Bạn có thể tải xuống một .deb được cập nhật từ trang web trực tiếp hoặc trỏ lại vào kho lưu trữ của họ và thực hiện một lệnh như thế này:

apt-get install postgresql-9.1

Backport Debian

Bạn có thể tìm thấy các phiên bản cụ thể ở đây, http://backports.debian.org/ .

Sử dụng phiên bản chung

Bạn có thể tải xuống bản dựng nhị phân của PostgreSQL và cài đặt nó trong thư mục chính của bạn hoặc /optví dụ.

Tải xuống một trong các bản dựng trước để sử dụng cho doanh nghiệp

Tôi không có nhiều kinh nghiệm với những thứ này nhưng bạn có thể tải xuống một trong những phiên bản tương tự như phiên bản chung và sử dụng ứng dụng khách từ cài đặt của nó, như là, làm đổ cơ sở dữ liệu của bạn.

Gói phân phối chéo

Bạn có thể tải xuống các gói đã được xây dựng để chúng không phân phối. Tôi vừa tải xuống phiên bản 9.1.9 và nó bao gồm pg_dumpcông cụ.

Phần mềm được cung cấp dưới dạng .rpm hoặc .deb và cài đặt vào /opt/postgres/9.1. Cụ thể pg_dumpcông cụ được cung cấp ở đây : /opt/postgres/9.1/bin/pg_dump.


Phiên bản của PostgreSQL không thực sự là vấn đề. Đó là phiên bản pg_dumpcũ và không tương thích. Có nơi nào tôi có thể tìm thấy cụ thể không?
supercheetah

Tôi nghĩ rằng nó được gói trong các gói này. Tôi sẽ chỉ tải xuống một trong những bản dựng trước cho phiên bản cụ thể và sử dụng pg_dumplệnh ngoài đó. Chúng không nên được cài đặt, chỉ cần được chỉnh sửa vào một thư mục. Bạn có thể phải đặt một biến môi trường để trỏ đến một thư mục thư viện nhưng nó sẽ khá dễ dàng.
slm

4

Một tùy chọn khác, có thể phù hợp với bạn, là gỡ cài đặt phiên bản song song cũ:

trên debian / ubfox:

sudo apt-get remove postgresql-8.4
sudo apt-get remove postgresql-client-8.4

Điều đó duy trì phiên bản mới hơn (ví dụ 9.1) chỉ loại bỏ các máy khách và máy chủ 8.4 cũ hơn.


4

Trong trường hợp của tôi, tôi đã có hai bộ cơ sở dữ liệu, một số chạy trên phiên bản cũ của Postgresql 8.4 và một bộ khác chạy trên phiên bản 9.1. Những gì tôi đã làm là xác định vị trí pg_dumptrong máy Linux bằng locatelệnh bên dưới

$ locate pg_dump

/usr/bin/pg_dump
/usr/bin/pg_dumpall
/usr/lib/postgresql/8.4/bin/pg_dump
/usr/lib/postgresql/8.4/bin/pg_dumpall
/usr/lib/postgresql/9.1/bin/pg_dump
/usr/lib/postgresql/9.1/bin/pg_dumpall

Vì mặc định /usr/bin/pg_dumplà cho Postgresql phiên bản 8.4, tôi chỉ xác định /usr/lib/postgresql/9.1/bin/pg_dumptừ dòng lệnh khi kết xuất từ ​​cơ sở dữ liệu 9.1 chạy trên một cổng khác và nó hoạt động.

$ /usr/lib/postgresql/9.1/bin/pg_dump -p 5434

2

Ngoài các câu trả lời ở trên, bạn cũng có thể nói pg_dumpvà các lệnh khác, phiên bản nào sẽ sử dụng thông qua clustertùy chọn. Ví dụ,

$pg_dump --cluster 9.1/main

sẽ nhắm mục tiêu phiên bản 9.1.

Lưu ý rằng điều này sử dụng pg_wrapper, đi kèm postgresql-commonvà hoạt động trên Ubuntu (Debian). Cũng lưu ý rằng cụm ( maintrong ví dụ) có thể khác trong cài đặt của bạn.

Thông tin thêm về pg_wrappercó thể được tìm thấy trong câu trả lời DBA này .


0

Hôm nay tôi gặp vấn đề tương tự và câu trả lời của Erick có vẻ chính xác nhất. Vấn đề có thể là bạn có các phiên bản khác nhau của postgresql-client và pg_dump chỉ sử dụng máy khách cũ nhất.

Bạn có thể giải quyết vấn đề này bằng cách sử dụng đường dẫn đầy đủ như anh mô tả, nhưng tôi đã tìm thấy một giải pháp dễ dàng hơn là loại bỏ gói chung postgresql-client (loại bỏ tất cả các máy khách), sau đó cài đặt lại postgresql-client-9.3. Điều này khiến bạn chỉ có các phiên bản mới nhất của pg_dump mà có lẽ bạn muốn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.