2

很多启动的postgresql服务,psql选择最低的postgresql版本

我已经安装了两个版本的 postgresql,12并且13(在这个问题的早期版本中,这些是9.19.2,我将其更改为与更高版本中添加的输出细节一致)。

sudo service postgresql status
12/main (port 5432): down
13/main (port 5433): down

它们位于/etc/postgresql/12//etc/postgresql/13/

在版本上安装扩展后13

sudo apt-get install postgresql-contrib postgresql-plpython3-13

启动 postgresql 服务:

sudo service postgresql start

输出:

 * Starting PostgreSQL 12 database server                                                                                                                                                                                             
 * Starting PostgreSQL 13 database server

现在让我们在数据库中创建扩展,运行:

sudo su - postgres

接着:

postgres=# psql
psql (13.4 (Ubuntu 13.4-1.pgdg20.04+1), server 12.7 (Ubuntu 12.7-0ubuntu0.20.04.1))
Type "help" for help.

postgres=# CREATE EXTENSION plpython3u;
ERROR:  could not open extension control file "/usr/share/postgresql/12/extension/plpython3u.control": No such file or directory

12尽管我已将扩展安装postgresql-python3u到 version 的目录,但我们看到在 version 中搜索了扩展13

目标

我只想使用版本13,我不需要两个不同的版本,而且 psql 似乎默认选择启动服务的最低可用 postgresql 版本,而不是我需要的最高版本。

如何12安全地删除版本或制作13唯一启动(或默认)的服务,同时使用5432版本的标准端口13

4

2 回答 2

5

当升级到提供更新的 postgresql 版本的更新版本时,可能会在 Ubuntu 中出现两个集群的这种情况。

自动升级不会删除旧集群,大概是因为担心会擦除有价值的数据(这是明智的,因为某些 postgres 升级可能需要人工完成)。

如果您知道要删除它,只需运行:

sudo pg_dropcluster --stop 9.1 main 

对应的数据目录将被移除,service postgresql不再引用9.1

此时9.2集群仍会使用5433端口,这是不切实际的。

要将其切换到默认端口,请编辑/etc/postgresql/9.2/main/postgresql.conf并将该行更改port = 5433port = 5432

然后重新启动 PostgreSQL。

终于摆脱了 postgresql-9.1 包,看看结果dpkg -l 'postgresql*9.1*'

于 2013-12-18T23:59:15.630 回答
2

psql失败,因为您的 postgres 都没有运行。
首先,您应该了解为什么有 2 个不同的服务器,然后删除其中一个(apt-get我认为是sudo service portgresql start通过psql --port=5433)。
编辑您的问题以添加更多信息(Ubuntu 版本、Postgres 来源等)...

于 2013-12-17T09:07:33.523 回答