首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pg_dump与psql的版本不同。

pg_dump与psql的版本不同。
EN

Database Administration用户
提问于 2021-12-07 09:59:34
回答 1查看 2.6K关注 0票数 3

我用sudo apt upgrade将postgres更新到版本14。

代码语言:javascript
复制
psql --version
psql (PostgreSQL) 14.1 (Ubuntu 14.1-2.pgdg20.04+1)

但是pg_dump并没有和其他的东西一起升级:

代码语言:javascript
复制
pg_dump --version
pg_dump (PostgreSQL) 12.9 (Ubuntu 12.9-2.pgdg20.04+1)

知道为什么吗?

我还清除了所有的postgres并重新安装了postgresql-14

代码语言:javascript
复制
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

sudo apt-get update

sudo apt-get -y install postgresql-14

但随后:

代码语言:javascript
复制
pg_dump --version      
Error: PostgreSQL version 12 is not installed

运行Ubuntu 20.04。

更新:

添加运行pg_lsclusters的结果

代码语言:javascript
复制
pg_lsclusters
Ver Cluster Port Status                Owner    Data directory              Log file
12  main    5432 down,binaries_missing postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
14  main    5433 online                postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log
EN

回答 1

Database Administration用户

回答已采纳

发布于 2021-12-07 15:20:11

pg_lsclusters的输出表明,未首先删除Postgres 12实例,就卸载了Postgres 12二进制文件。注意Status列是如何表示binaries_missing的。在卸载时,删除脚本需要特别注意不要破坏您的数据,这就是为什么实例及其数据可能有点棘手的原因。

若要删除“僵尸”实例,请使用

代码语言:javascript
复制
$ sudo pg_dropcluster 12 main

然后只有14/main实例将保留在pg_lsclusters列表中,pg_dump和其他通过Debian/Ubuntu pg_包装脚本的客户端应用程序将停止首先选择12/main实例。

您还可能希望将您的14/main实例重新定位到5432端口,因为它是Postgres的默认端口,如果您不打算在同一主机上拥有多个实例,那么使用默认端口将使您的生活更加轻松。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/303607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档