Я использую PostgreSQL в Debian Unstable / Sid. У меня есть текущие версии (9.1) из postgresql
, postgresql-client
, postgresql-client-common
(143) установлен.
Проблема, которую я имею, пытается бежать pg_dump
. Я получаю эту ошибку:
pg_dump: server version: 9.1.9; pg_dump version: 9.0.6
pg_dump: aborting because of server version mismatch
Я не могу понять, как получить более новую версию pg_dump
. Кажется, он идет из postgresql-client-common
пакета, и я пытался запустить apt-get --reinstall
его, но это не дало мне более новую версию pg_dump.
Как мне обойти это? Или где я могу найти пакет с более новой версией pg_dump
?
debian
postgresql
supercheetah
источник
источник
which pg_dump
показывает тебе? Просто чтобы подтвердить, что это на самом деле упакованная версия, а не какая-то другая./usr/bin/pg_dump
, иdpkg -S /usr/bin/pg_dump
дает мнеpostgresql-client-common: /usr/bin/pg_dump
.Ответы:
Пара вариантов.
Загрузите .deb 9.1 с сайта Postgres
Взгляните на эту страницу под названием: Загрузки Linux (Debian) - PostgreSQL . Вы можете либо загрузить обновленный .deb непосредственно с сайта, либо повторно указать его хранилище, и выполнить команду, подобную этой:
Backian Debian
Вы можете найти конкретные версии здесь, http://backports.debian.org/ .
Используйте универсальную версию
Вы можете скачать двоичную сборку PostgreSQL и поместить ее в свой домашний каталог или,
/opt
например,.Загрузите одну из предварительных сборок для корпоративного использования
У меня нет большого опыта работы с ними, но вы можете загрузить одну из них, аналогичную универсальной версии, и использовать клиент из его установки, как, впрочем, и создавать дамп вашей базы данных.
Пакеты перекрестного распространения
Вы можете скачать пакеты, которые были собраны так, что они не зависят от распространения. Я только что загрузил версию 9.1.9, и она включает в себя
pg_dump
инструмент.Программное обеспечение предоставляется в формате .rpm или .deb и устанавливается в
/opt/postgres/9.1
. В частности,pg_dump
инструмент приводится здесь:/opt/postgres/9.1/bin/pg_dump
.источник
pg_dump
старая и несовместимая версия . Есть ли место, где я могу найти именно это?pg_dump
команду оттуда. Их не нужно устанавливать, просто положить их в каталог. Возможно, вам придется установить переменную окружения, чтобы она указывала на каталог библиотеки, но это должно быть довольно просто.Другой вариант, который может подойти вам, - удалить старую параллельную версию:
в Debian / Ubuntu:
Это сохраняет более позднюю версию (например, 9.1), удаляя только старые версии 8.4 клиента и сервера.
источник
В моем случае у меня было два набора баз данных, некоторые из которых работали на старой версии Postgresql 8.4, а другие - на версии 9.1. Что я сделал, чтобы найти
pg_dump
в Linux-машине с помощьюlocate
команды нижеТак как по умолчанию
/usr/bin/pg_dump
используется Postgresql версии 8.4, я просто указал в/usr/lib/postgresql/9.1/bin/pg_dump
командной строке при выгрузке базы данных 9.1, которая работает на другом порту, и это сработало.источник
В дополнение к ответам выше, вы также можете указать
pg_dump
и другие команды, какую версию использовать черезcluster
опцию. Например,будет нацелена на версию 9.1.
Обратите внимание, что это использует
pg_wrapper
, который поставляетсяpostgresql-common
и работает на Ubuntu (Debian). Также обратите внимание, что кластер (main
в примере) может отличаться в ваших настройках.Более подробную информацию о
pg_wrapper
можно найти в этом ответе DBA .источник
Я столкнулся с той же проблемой сегодня, и ответ Эрика, кажется, наиболее точный. Проблема, вероятно, в том, что у вас разные версии postgresql-client, а pg_dump просто использует самый старый клиент.
Вы можете решить эту проблему, используя полный путь, как он описал, но я нашел более простое решение - удалить пакет postgresql-client-common (который удаляет все клиенты), а затем переустановить postgresql-client-9.3. Это оставляет вам только последние версии pg_dump, которые, вероятно, вам нужны.
источник