如何修复pg_dump版本不匹配错误?

时间:2013-01-05 05:23:08

标签: postgresql osx-mountain-lion uninstall 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并从http://postgresapp.com/彻底安装了PostgreSQL 9.2.2,但我不知道如何去做卸载。

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

6 个答案:

答案 0 :(得分:28)

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

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

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

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

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

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

我有这个设置,它适用于我。

答案 1 :(得分:27)

如果你只需要将pg_dump升级到最新版本,并且你有自制软件和mac,如果应用程序有最新版本而你的本地pg没有:

brew upgrade postgresql

答案 2 :(得分: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

答案 3 :(得分:2)

我正在运行Mountain Lion Server。我的PostgreSQL服务器版本为9.2.1,默认工具为9.1.5。

我不得不使用:

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

让它发挥作用。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

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

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