Я пытаюсь сбросить базу данных Postgresql с помощью инструмента pg_dump .
$ pg_dump books > books.out
Как бы то ни было, я получаю эту ошибку.
pg_dump: server version: 9.2.1; pg_dump version: 9.1.6
pg_dump: aborting because of server version mismatch
Эта --ignore-version
опция устарела и действительно не была бы решением моей проблемы, даже если бы она сработала.
Как я могу обновить pg_dump, чтобы решить эту проблему?
postgresql
backup
pg-dump
postgresql-9.2
Крис Колла
источник
источник
Ответы:
Вы можете установить PostgreSQL 9.2.1 на
pg_dump
клиентском компьютере или просто скопировать$PGHOME
файл с сервера PostgreSQL на клиентский компьютер. Обратите внимание, чтоinitdb
новый кластер на клиентском компьютере не требуется .После того, как вы закончили установку программного обеспечения 9.2.1, не забудьте отредактировать некоторые переменные среды в вашем
.bash_profile
файле.источник
Я столкнулся с этим при использовании Heroku в Ubuntu, и вот как я это исправил:
Добавьте репозиторий PostgreSQL apt, как описано в разделе «Загрузки для Linux (Ubuntu) ». (Подобные страницы есть и для других операционных систем.)
Обновитесь до последней версии (для меня 9.3) с помощью:
sudo apt-get install postgresql
Воссоздайте символическую ссылку
/usr/bin
с помощью:sudo ln -s /usr/lib/postgresql/9.3/bin/pg_dump /usr/bin/pg_dump --force
Номер версии в указанном
/usr/lib/postgresql/...
выше пути должен совпадать сserver version
номером полученной вами ошибки. Так что, если ваша ошибка говоритpg_dump: server version: 9.9
, то ссылка на/usr/lib/postgresql/9.9/...
.источник
Проверьте установленную версию (и) pg_dump:
Мой результат был:
Установлено две версии. Чтобы обновить pg_dump до более новой версии:
sudo ln -s /usr/pgsql-9.3/bin/pg_dump /usr/bin/pg_dump --force
Это создаст символическую ссылку на более новую версию.
источник
locate pg_dump
2>/dev/null
так как это приведет к выбросу потока ERROR, а не на его вывод на консоль. Я думаю, что нужно видеть любые ошибки, за исключением некоторых редких случаев. Например, в моем случае это напоминает мне, что я не был пользователем root, поэтому не видел некоторые каталоги, в которых была установлена более новая версия pg_dump. В общем, не удаляйте ошибки.На компьютерах Mac есть встроенная
/usr/bin/pg_dump
команда, которая используется по умолчанию.После установки postgresql вы получите еще один двоичный файл по адресу
/Library/PostgreSQL/<version>/bin/pg_dump
источник
Вы можете просто найти
pg_dump
и использовать полный путь в командеТеперь просто используйте путь к желаемой версии в команде
источник
sudo /usr/pgsql-<version>/bin/pg_dump <database-name> -U <username> -h localhost
Если вы используете Ubuntu, возможно, у вас установлена старая версия
postgresql-client
. В зависимости от версий в вашем сообщении об ошибке решение будет следующим:sudo apt-get remove postgresql-client-9.1 sudo apt-get install postgresql-client-9.2
источник
Каждый раз, когда вы обновляете или повторно устанавливаете новую версию PostgreSQL, устанавливается последняя версия
pg_dump
.PostgreSQL/bin
Где-то в вашей системе должен быть каталог под последней версией PostgreSQL, которую вы установили (9.2.1 является последней), и попробуйте запуститьpg_dump
оттуда.источник
Terminal.app
,find / -name pg_dump -type f 2>/dev/null
Для Mac с Homebrew. У меня была эта проблема при получении db из Heroku. Я исправил это только что запущено:
источник
brew search postgres
чтобы увидеть их все.Для тех, кто использует Postgres.app :
Добавьте следующий код в свой
.bash_profile
:export PATH=/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH
Перезагрузите терминал.
источник
В Ubuntu вы можете просто добавить самый последний репозиторий Apt, а затем запустить:
sudo apt-get install postgresql-client-11
источник
Для пользователей Mac помещается в начало файла .profile.
затем беги
источник
Как объяснялось, это связано с тем, что ваш postgresql находится в старой версии -> обновите его для Mac через homebrew:
brew tap petere/postgresql
,brew install <formula>
(например:brew install petere/postgresql/postgresql-9.6
)Удалите старый postgre:
brew unlink postgresql
brew link -f postgresql-9.6
Если произойдет какая-либо ошибка, не забудьте прочитать и следовать инструкциям по завариванию на каждом этапе.
Проверьте это, чтобы узнать больше: https://github.com/petere/homebrew-postgresql
источник
Альтернативный ответ, который, я думаю, никто не покрыл.
Если у вас установлено несколько кластеров PG (как и у меня), вы можете просмотреть те, которые используют
pg_lsclusters
.Вы должны увидеть версию и кластер из отображаемого списка.
Оттуда вы можете сделать это:
pg_dump --cluster=9.6/main books > books.out
Очевидно, замените версию и имя кластера на соответствующие для ваших обстоятельств из того, что возвращается,
pg_lsclusters
разделив версию и кластер символом /. Это нацелено на конкретный кластер, с которым вы хотите работать.источник
pg_dump
не работал на одном из моих кластеров. Оказывается, он использовал версию Postgresql по умолчанию, когда один из моих кластеров был обновлен до более новой версии. Указав кластер, решил проблему.Если у вас установлен докер, вы можете сделать что-то вроде:
$ docker run postgres:9.2 pg_dump books > books.out
Это загрузит контейнер Docker с Postgres 9.2 в нем, запустится
pg_dump
внутри контейнера и запишет результат.источник
Ответ звучит глупо, но если вы получите указанную выше ошибку и хотите запустить pg_dump для более ранней версии, перейдите в каталог bin postgres и введите
./pg_dump servername> out.sql ./ игнорирует корень и ищет pg_dump в текущем каталоге
источник
Для меня проблема заключалась в том, что обновление
psql
apt-get
не разрешало новые версии даже послеupdate
. Следующее сработало.Ubuntu
Начните с импорта ключа GPG для пакетов PostgreSQL.
sudo apt-get install wget ca-certificates wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Теперь добавьте репозиторий в вашу систему.
Установите PostgreSQL в Ubuntu
sudo apt-get update sudo apt-get install postgresql postgresql-contrib
https://www.postgresql.org/download/linux/ubuntu/
источник
** после установки версия postgres соответствует (9.2) Создайте символическую ссылку или новый ярлык
** - на '/ usr / bin'
syntag is = sudo ln -s [path for use] [new shortcut name]
пример
- как вызвать: new_pg_dump -h 192.168.9.88 -U база данных postgres
источник
Попробуй это:
источник
Если база данных установлена на другом компьютере, вероятно, у нее установлена правильная версия pg_dump. Это означает, что вы можете выполнить команду pg_dump удаленно с помощью SSH:
ssh username@dbserver pg_dump books > books.out
Вы также можете использовать аутентификацию с открытым ключом для выполнения без пароля. Шаги для достижения этого:
источник
Ну, у меня была та же проблема, что и у меня установлены две версии postgress.
Просто используйте правильный pg_dump, и в вашем случае ничего менять не нужно:
источник
У меня была такая же ошибка, и вот как я решил ее в моем случае. Это означает, что ваша версия postgresql - 9.2.1, но вы запустили службу postgresql версии 9.1.6.
Если вы побежите,
psql postgres
то увидите:psql (9.2.1, server 9.1.6)
Что я сделал для решения этой проблемы:
brew services stop postgresql@9.1.6
brew services restart postgresql@9.2.1
Теперь запустите,
psql postgres
и у вас должно получиться:psql (9.2.1)
Вы также можете запустить,
brew services list
чтобы увидеть статус ваших postgres.источник
Если вы используете Heroku Postgres.app, pg_dump (вместе со всеми другими двоичными файлами) находится в
/Applications/Postgres.app/Contents/MacOS/bin/
так что в этом случае это
ln -s /Applications/Postgres.app/Contents/MacOS/bin/pg_dump /usr/local/bin/pg_dump
или
ln -s /Applications/Postgres.app/Contents/MacOS/bin/* /usr/local/bin/.
просто схватить их всех
источник
Для Mac используйте
find / -name pg_dump -type f 2>/dev/null
поиск местоположения pg_dumpДля меня у меня следующие результаты:
Если вы не хотите использовать
sudo ln -s new_pg_dump old_pg_dump --force
, просто используйте:Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump
заменить наpg_dump
в вашем терминалеНапример:
Меня устраивает!
источник
Загрузите соответствующую версию postgres здесь:
https://www.postgresql.org/download/
Обязательно выполните следующие команды (URL-адрес postgresql.org/download сгенерирует для вас конкретный URL-адрес; тот, который я использую ниже, является просто примером для centos 7) как sudo:
sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install postgresql11-server
ваша версия pg_dump теперь должна быть обновлена, проверьте с помощью pg_dump -V
источник
В моем сценарии производственная версия была 12, а моя версия разработки - 11, обновления пакета
postgresql-client-xx
было достаточно, чтобы решить мой инцидент.Справочная веб-страница: https://www.postgresql.org/download/linux/ubuntu/
sudo apt-get update && sudo apt-get -y upgrade postgresql-client
Следует отметить, что после обновления предыдущая версия осталась установленной:
mlazo@mlazo-pc:~$ dpkg -l |grep -i postgresql-client ii postgresql-client-11 11.8-1.pgdg18.04+1 amd64 front-end programs for PostgreSQL 11 ii postgresql-client-12 12.4-1.pgdg18.04+1 amd64 front-end programs for PostgreSQL 12
Надеюсь, мой опыт будет кому-то полезен.
Приветствия,
источник
Первый шаг: посмотрите, есть ли у postgres репозиторий с готовыми двоичными файлами для версии, которую вы хотите для своей ОС: https://www.postgresql.org/download/
Если это не сработает (например, если ваш дистрибутив существует, но больше не поддерживается, поэтому для него не предусмотрены правильные двоичные файлы), или если вы просто хотите перейти прямо к источнику и не беспокоиться о добавлении удаленного репо и др.
Что я сделал, так это загрузил исходный код postgres для желаемой версии.
Разверните его, cd в него, соберите его
./configure && make
, затем:postgresql-12.3 $ find . -name pg_dump ./src/bin/pg_dump/pg_dump $ ./src/bin/pg_dump/pg_dump unable to load libpg.so.5 # if it says this... $ find . -name libpg.so.5 $ export LD_LIBRARY_PATH=/your/path/to/the/shared/dir/of/above/file $ ./src/bin/pg_dump/pg_dump # works now
Теперь у вас есть доступ к любой версии, созданной на вашем компьютере. Который должен быть любым.
источник
У меня возникла аналогичная проблема при установке Fedora 17. Вот что я сделал, чтобы обойти проблему
pg_dump
в/usr/bin/pg_dump
(как root: "rm / usr / bin / pg_dump")Теперь сделаем символическую ссылку на установку postgresql
Снова как root
ln -s /usr/pgsql-9.2/bin/pg_dump /usr/bin/pg_dump
Это должно делать свое дело
источник
/usr/
(а не/usr/local/
,/home/
или/opt/
, где удаление вещи , как правило , в порядке) , вы действительно должны использовать менеджер пакетов -rpm
иyum
илиdpkg
иapt-get
илиaptitude
, дистрибутив-зависимость. Либо удалите пакет,rpm
либо изменитеPATH
переменную среды в вашем.bash_profile
так, чтобы сначала находилась более новая версия. Если вы сомневаетесь в том, что что-то находится под управлением пакетов, используйтеrpm -qf /path/to/file
(RPM) илиdpkg -S /path/to/file
(dpkg)