Я установил два сервера PostgreSQL в своем компьютере. Каждый 9.1, и другой 9.3. Мне нужны оба установленные сервера.
Когда я выполняю pg_dump, однако, я получаю ошибку несоответствия версии:
server version: 9.3.6; pg_dump version: 9.1.15
pg_dump: aborting because of server version mismatch
Как я могу решить его? (Не удалить ни одну версию - я установил первые 9.1 и 9.3 много месяцев спустя - мне нужны оба установленные серверов баз данных).
TL; DR: если обоими экземплярами PostgreSQL управляют пакеты Ubuntu (как они должны), просто использовать --cluster
опция выбрать экземпляр PostgreSQL для резервного копирования, и это автоматически выберет соответствующую версию pg_dump:
pg_dump --cluster 9.1/main [other pg_dump options]
или
pg_dump --cluster 9.3/main [other pg_dump options]
.
main
просто значение по умолчанию, выполненное pg_lsclusters
видеть Ваши подлинные имена в Cluster
столбец.
Как это работает: как установлено пакетами Ubuntu, /usr/bin/pg_dump
на самом деле гибкая ссылка на /usr/share/postgresql-common/pg_wrapper
, чья цель состоит в том, чтобы точно выбрать корректный экземпляр и выполнить соответствующий двоичный файл. --cluster
не существует в запасе команды PostgreSQL, это - дополнение Debian/Ubuntu, которое предназначено для обращения к этому несколько проблем версий/разнообразных путей.
Это - то же для psql
, createdb
, createuser
, и т.д. приблизительно 18 пост-ГРЭС управляет в /usr/bin
на самом деле управляются pg_wrapper
.
Посмотрите человека pg_wrapper для больше.
Вы можете использовать:
sudo find / -name pg_dump
, чтобы найти ваши версии pg_dump
в моем случае: /usr/pgsql-9.6/bin/pg_dump
, так что дальше мы можем сделать:
sudo ln -sfn /usr/pgsql-9.6/bin/pg_dump /usr/bin/pg_dump
[ 117], чтобы обновить до того, что нам нужно