34

在尝试将本地数据获取到 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 并从http://postgresapp.com/重新安装 PostgreSQL 9.2.2 重新开始,我可能会简化我的生活,但我不知道该怎么做卸载。

我正在运行 Mac OS X Mountain Lion 10.8.2。

4

6 回答 6

35

OS X 10.8 在目录中附带pg_dump版本 9.1.4 ,以及其他作为客户端PostgreSQL 工具的程序。这并不意味着安装了 PostgreSQL 作为服务器(除非你有 OS X 服务器版)。因此,您不必卸载 PostgreSQL,因为它没有安装,最好不要删除这些 postgres 客户端工具,因为它们属于 Apple 提供的系统。他们只需要被绕开。/usr/binpsql/usr/bin

postgres.app 提供的包包含 PostgreSQL 服务器和与该服务器相同版本的客户端工具。这些工具安装在/Applications/Postgres.app/Contents/MacOS/bin

当您在终端中工作时,要使用这些而不是 Apple 的 9.1,postgres.app文档说要这样做:

PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

并将其放入您的.profile文件中。

完成此操作并运行pg_dump后,您不应再收到错误版本的错误,因为它将是 postgres.app 附带的版本(当前为 9.2.2)。

我有这个设置,它对我来说工作正常。

于 2013-01-05T15:50:29.857 回答
35

如果您只需要将 pg_dump 升级到最新版本并且您有 homebrew 和 mac,如果应用程序具有最新版本而您的本地 pg 没有:

brew upgrade postgresql

于 2015-05-15T01:30:22.283 回答
7

如果您使用的是 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

于 2014-09-27T03:28:17.247 回答
2

我正在运行山狮服务器。我的 PostgeSQL 服务器版本为 9.2.1,默认工具版本为 9.1.5。

我不得不使用:

PATH="/Applications/Server.app/Contents/ServerRoot/usr/bin:$PATH"

让它工作。

于 2013-09-01T20:36:02.673 回答
1

是的,有时如果您运行 Postgres.app,这可能会在升级后发生。确保您重新启动 Postgres.app - 它会更新您的 PATH。

于 2015-02-10T04:48:34.257 回答
1

在我的情况下,我通过自制软件安装了 postgresql,可执行文件在这里:/usr/local/opt/postgresql@9.6/bin

或者您将转储和恢复执行复制到 /Applications/Postgres.app/Contents/SharedSupport 文件夹

或在 PdAgmin 中,将 PG bin 路径(在属性 -> 二进制路径中)指向 postgre 的可执行文件的路径

于 2018-01-24T22:19:17.237 回答