当试图将本地数据获取到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
7条答案
按热度按时间xlpyo6sf1#
OS X 10.8在
/usr/bin
目录中附带了pg_dump
版本9.1.4,沿着psql
和其他作为客户端PostgreSQL工具的程序。这并不意味着安装了PostgreSQL作为服务器(除非您有OS X Server Edition)。所以你不必卸载PostgreSQL,因为它没有安装,最好不要删除/usr/bin
中的这些postgres客户端工具,因为它们属于Apple提供的系统。他们只需要靠边站。由www.example.com提供的包postgres.app包括PostgreSQL服务器和与此服务器相同版本的客户端工具。这些工具安装在
/Applications/Postgres.app/Contents/MacOS/bin
中要在终端中使用这些而不是Apple的9.1,postgres.app documentation说:
并将其放入
.profile
文件中。一旦你完成了这一步,并运行
pg_dump
,你就不会再得到错误的版本,因为它将是www.example.com附带的版本postgres.app(目前是9.2.2)。我有这个设置,它对我来说很好。
ao218c7q2#
如果你只需要升级你的pg_dump到最新版本,并且你有homebrew和mac,如果应用程序有最新版本,而你的本地pg没有:
brew upgrade postgresql
14ifxucb3#
如果您使用的是postgresapp 9.3.x,则路径不同。以下是我的工作(由http://sigmyers.com/blog/2013/3/12/postgres-pgdump-version-mismatch-error-postgresapp-postgresappcom提供)
查看最新路径:http://postgresapp.com/documentation/cli-tools.html
o4hqfura4#
我在运行Mountain Lion服务器。我的PostgeSQL服务器版本是9.2.1,默认工具是9.1.5。
我不得不用途:
才能成功
mfpqipee5#
是的,有时如果你运行Postgres.app,升级后可能会发生这种情况。确保重新启动Postgres.app -它会更新你的PATH。
d7v8vwbk6#
在我的例子中,我通过Homebrew安装了postgresql,可执行文件如下:/usr/local/opt/postgresql@9.6/bin
或者将转储和恢复执行复制到/Applications/Postgres.app/Contents/SharedSupport文件夹
或者在PdAgmin中,将PG bin Path(在properties -> binary Path中)指向postgre的可执行文件的路径
flmtquvp7#
在我们的Kubernetes集群中,PostgreSQL-14 DB也有同样的(不匹配)问题。因此,我们删除了当前安装的“postgresql-client-13”,并使用以下代码安装了客户端版本-14
Docker镜像中的
apt-get install -y postgresql-client-14
。然后,我们能够连接到数据库,并采取备份转储!所以,请按照错误所述修复不匹配。保重!!