如何修复 pg_dump 版本不匹配错误?
Posted
技术标签:
【中文标题】如何修复 pg_dump 版本不匹配错误?【英文标题】:How to fix pg_dump version mismatch errors? 【发布时间】:2012-12-19 14:05:00 【问题描述】:在尝试将本地数据获取到 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。
【问题讨论】:
我已经解决了更改link
路径的问题,如本答案serverfault.com/a/426510 中所述
【参考方案1】:
OS X 10.8 在/usr/bin
目录中附带pg_dump
9.1.4 版,以及psql
和其他客户端 PostgreSQL 工具程序。这并不意味着安装了 PostgreSQL 作为服务器(除非你有 OS X 服务器版)。
因此,您不必卸载 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)附带的版本。
我有这个设置,它对我来说没问题。
【讨论】:
谢谢你,丹尼尔!作为 OS X 的新手,我无法立即实施您的建议,但我得到了一位朋友的帮助。他最终根据您的建议编辑了 .bash_profile 。我不再收到“版本不匹配”错误,并且正在创建转储文件。所以:进步!再次感谢。迈克 @Daniel,如果我使用官方安装安装了 postgres,我将如何解决这个错误? (enterprisedb.com/products-services-training/pgdownload#osx) @Rizon: AFAIK 没有 official 安装。看看postgresql.org says关于OS X的预编译版本。除此之外,上面答案的通用版本是只使用您安装的服务器附带的客户端工具(pg_dump,psql ...)。 如果您使用图形安装程序(当前为 v 9.2.4),pg_dump 位于 /Library/PostgreSQL/9.2/bin/pg_dump 就像@MichaelWasser 说的。如果您下载图形编辑器,请务必将 .profile 或 .bash_profile 中的路径设置为PATH=/Library/PostgreSQL/9.2/bin/:$PATH
【参考方案2】:
如果你只需要升级你的 pg_dump 到最新版本并且你有 homebrew 和 mac,如果应用程序有最新版本而你的本地 pg 没有:
brew upgrade postgresql
【讨论】:
这是最简单的解决方案,值得先尝试(在 OS X 10.9 上对我有用),然后再深入研究其他有效方法。 不幸的是它没有更新 pg_dump。运行后,我仍然得到while executing pg_dump: pg_dump: error: server version: 13.1; pg_dump version: 12.2 (Debian 12.2-2.pgdg90+1)
【参考方案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,可执行文件在这里:/usr/local/opt/postgresql@9.6/bin
或者您将转储和恢复执行复制到 /Applications/Postgres.app/Contents/SharedSupport 文件夹
或者在 PdAgmin 中,您将 PG bin 路径(在属性 -> 二进制路径中)指向您的 postgre 的可执行文件的路径
【讨论】:
以上是关于如何修复 pg_dump 版本不匹配错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 Laravel Spark v4.0.9 上的“Vue 包版本不匹配”错误?
EC2 和 RDS 之间的备份 gem pg_dump 版本不匹配
切换到 64 位 Excel 后如何修复 VBA“类型不匹配”错误