Как исправить ошибки несоответствия версии pg_dump?
При попытке получить локальные данные в Heroku, я сталкиваюсь с несоответствием версии между двумя различными версиями pg_dump.
В частности, я получаю это сообщение:
pg_dump: server version: 9.2.2; pg_dump version: 9.1.4
pg_dump: aborting because of server version mismatch
Я нашел других с этой проблемой, но недостаточно знаю, чтобы реализовать предлагаемые решения. (Я новичок в Ruby on Rails, PostgreSQL, Heroku и Mac! Очень на этапе игры вокруг выбора, когда я ухожу.)
Я думал, что могу упростить свою жизнь, если я удалю весь PostgreSQL на своем локальном компьютере и снова начал с чистой установки PostgreSQL 9.2.2 из http://postgresapp.com/, но я не знаю, как это сделать.
Я запускаю Mac OS X Mountain Lion 10.8.2.
Ответы
Ответ 1
OS X 10.8 поставляется с pg_dump
версией 9.1.4 в каталоге /usr/bin
вместе с psql
и другими программами, которые являются клиентскими средствами PostgreSQL. Это не означает, что PostgreSQL как сервер установлен (если у вас нет OS X Server Edition).
Поэтому вам не нужно удалять PostgreSQL, потому что он не установлен, и лучше не удалять эти клиентские инструменты postgres в /usr/bin
, потому что они принадлежат к системе, поставляемой Apple. Они просто должны быть побочными.
Пакет, предоставляемый postgres.app, включает как сервер PostgreSQL, так и клиентские инструменты той же версии, что и этот сервер. Эти инструменты устанавливаются в /Applications/Postgres.app/Contents/MacOS/bin
Чтобы использовать их вместо 9.1 из Apple, когда вы работаете в терминале, postgres.app documentation говорит:
PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
и поместите его в свой .profile
файл.
После того, как вы это сделали, и вы запустите pg_dump
, вы больше не будете получать ошибку в неверной версии, потому что это будет тот, который поставляется с postgres.app(в настоящее время 9.2.2).
У меня есть эта настройка, и она работает нормально для меня.
Ответ 2
Если вам нужно только обновить pg_dump до последней версии, и у вас есть доморощенный и mac, если у приложения установлена последняя версия, а ваш локальный pg не работает:
brew upgrade postgresql
Ответ 3
Если вы используете postgresapp 9.3.x, путь отличается. Следующие работали для меня (любезно предоставлено http://sigmyers.com/blog/2013/3/12/postgres-pgdump-version-mismatch-error-postgresapp-postgresappcom)
export PG_BIN_PATH="/Applications/Postgres.app/Contents/Versions/9.3/bin/"
PATH=$PG_BIN_PATH:$PATH
Проверьте здесь последний путь: http://postgresapp.com/documentation/cli-tools.html
Ответ 4
Я запускаю сервер Mountain Lion. Мой сервер PostgeSQL находится в версии 9.2.1, а инструменты по умолчанию - 9.1.5.
Мне пришлось использовать:
PATH="/Applications/Server.app/Contents/ServerRoot/usr/bin:$PATH"
чтобы он работал.
Ответ 5
Да, иногда, если вы запускаете Postgres.app, это может произойти после обновления. Убедитесь, что вы перезапустили свой Postgres.app - он обновит вашу PATH.
Ответ 6
В моем случае у меня есть postgresql, установленный через homebrew, и исполняемые файлы находятся здесь:/usr/local/opt/[email protected]/bin
Или вы копируете дамп и восстанавливаете выполнение в папку /Applications/Postgres.app/Contents/SharedSupport
или в PdAgmin вы указываете путь PG bin (в свойствах → двоичный путь) к пути к исполняемым файлам вашего postgre