Я установил два сервера 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 - мне нужно установить оба сервера базы данных).
postgresql
Луис Масуэлли
источник
источник
pg_dump
. Оба установлены, но только один по умолчанию. Посмотритеupdate-alternatives
пути илиdpkg -L
клиентский пакет postgresql, чтобы увидеть, где они находятся. У меня нет немедленного доступа к коробке с Ubuntu, чтобы показать себя.PATH
Тогда вам придется изменить переменную среды, с которой работает приложение.Ответы:
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 команд Postgres в/usr/bin
фактически управляетсяpg_wrapper
.Смотрите man pg_wrapper для более.
источник
version
= основная версия postgresql иmain
= имя кластера по умолчанию. Смотрите страницы pg_lsclusters и pg_wrapper.Ты можешь использовать:
найти ваши версии
pg_dump
в моем случае:/usr/pgsql-9.6/bin/pg_dump
так что дальше мы можем сделать:
для того, чтобы обновить до того, что нам нужно
источник