Làm cách nào để giải quyết phiên bản máy chủ của Cameron không khớp với pg_dump khi tôi cần cài đặt máy chủ BOTH PostgreQuery?


13

Tôi đã cài đặt hai máy chủ PostgreSQL trong máy tính của mình. Một là 9.1 và cái kia là 9.3. Tôi cần cài đặt cả hai máy chủ.

Tuy nhiên, khi tôi chạy pg_dump, tôi gặp lỗi không khớp phiên bản:

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

Làm thế nào tôi có thể giải quyết nó? (Không thể gỡ cài đặt một trong hai phiên bản - Tôi đã cài đặt bản 9.1 trước và bản 9.3 nhiều tháng sau - Tôi cần cả hai máy chủ cơ sở dữ liệu được cài đặt).


Hoàn toàn chạy phiên bản 9.3 của pg_dump. Cả hai đều được cài đặt, nhưng chỉ có một là mặc định. Xem update-alternativescác đường dẫn hoặc dpkg -Lgói ứng dụng khách postgresql để xem chúng ở đâu. Không có quyền truy cập ngay vào hộp Ubuntu để hiển thị cho bạn.
Craig Ringer

Không thể. Lệnh pg_dump đang được chạy từ một ứng dụng khác.
Luis Masuelli

Sau đó, bạn sẽ phải thay đổi PATHbiến môi trường mà ứng dụng chạy cùng.
Craig Ringer

Tôi đã từng gặp vấn đề tương tự. Tôi đã phải cài đặt qua kho lưu trữ apt PostgreSQL: askubfox.com/a/831293/448857
neoneye

Câu trả lời:


16

TL; DR : nếu cả hai phiên bản PostgreQuery được quản lý bởi các gói Ubuntu (nếu cần), chỉ cần sử dụng --clustertùy chọn để chọn phiên bản PostgreQuery để sao lưu và nó sẽ tự động chọn phiên bản tương ứng của pg_dump:

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

hoặc là

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

mainchỉ là một giá trị mặc định, hãy chạy pg_lsclustersđể xem tên thật của bạn trong Clustercột.

Cách thức hoạt động: như được cài đặt bởi các gói Ubuntu, /usr/bin/pg_dumpthực sự là một liên kết mềm /usr/share/postgresql-common/pg_wrapper, với mục đích chính xác là chọn đúng thể hiện và chạy nhị phân tương ứng. --clusterkhông tồn tại trong các lệnh PostgreQuery, đây là một bổ sung Debian / Ubuntu nhằm giải quyết vấn đề nhiều phiên bản / nhiều đường dẫn này.

Đây là giống nhau cho psql, createdb, createuservv khoảng 18 postgres lệnh trong /usr/binđang thực sự được quản lý bởi pg_wrapper.

Xem người đàn ông pg_wrapper để biết thêm.


phiên bản / chính để làm gì? chính là gì
Alexander Mills

1
@AlexanderMills: version= phiên bản chính của postgresql và main= tên mặc định của cụm. Xem các trang của pg_lscluster và pg_wrapper.
Daniel Vérité

7

Bạn có thể dùng:

sudo find / -name pg_dump

để tìm phiên bản của bạn pg_dumptrong trường hợp của tôi:/usr/pgsql-9.6/bin/pg_dump

Vì vậy, tiếp theo chúng ta có thể làm:

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

để cập nhật lên cái chúng ta cầ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.