我在我的电脑上安装了两台 PostgreSQL 服务器。一个是 9.1,另一个是 9.3。我需要安装两台服务器。
但是,当我运行 pg_dump 时,出现版本不匹配错误:
server version: 9.3.6; pg_dump version: 9.1.15
pg_dump: aborting because of server version mismatch
Run Code Online (Sandbox Code Playgroud)
我该如何解决?(无法卸载任一版本 - 我先安装了 9.1,几个月后又安装了 9.3 - 我需要安装两个数据库服务器)。
Dan*_*ité 17
TL;DR : 如果两个 PostgreSQL 实例都由 Ubuntu 包管理(应该如此),只需使用--cluster选项选择要备份的 PostgreSQL 实例,它会自动选择相应版本的 pg_dump:
pg_dump --cluster 9.1/main [other pg_dump options]
或者
pg_dump --cluster 9.3/main [other pg_dump options].
main只是一个默认值,运行pg_lsclusters以查看Cluster列中的实际名称。
它是如何工作的:由 Ubuntu 软件包安装,/usr/bin/pg_dump实际上是一个到 的软链接/usr/share/postgresql-common/pg_wrapper,其目的正是选择正确的实例并运行相应的二进制文件。--clusterPostgreSQL 命令中不存在,它是 Debian/Ubuntu 的补充,旨在解决这个多版本/多路径问题。
这对于psql, createdb,createuser等也是一样的。大约 18 个 postgres 命令/usr/bin实际上是由pg_wrapper.
有关更多信息,请参阅man pg_wrapper。
小智 9
您可以使用:
sudo find / -name pg_dump
Run Code Online (Sandbox Code Playgroud)
pg_dump在我的情况下找到你的版本:/usr/pgsql-9.6/bin/pg_dump
所以接下来我们可以这样做:
sudo ln -sfn /usr/pgsql-9.6/bin/pg_dump /usr/bin/pg_dump
Run Code Online (Sandbox Code Playgroud)
为了更新到我们需要的那个
| 归档时间: |
|
| 查看次数: |
82727 次 |
| 最近记录: |