如何设置默认使用哪个 PostgreSQL 版本?

cof*_*der 27 configuration init.d default postgresql

我的系统上安装了 2 个不同版本的 PostgreSQL (Ubuntu Lucid):

  • /var/lib/postgresql/8.4
  • /var/lib/postgresql/9.0

默认情况下,当我运行 createb 或 psql 等 PostgreSQL 命令时,使用 9.0 版本。

如何将我的系统配置为默认使用 8.4 版本?

Jam*_*dge 18

默认情况下,各种 PostgreSQL 命令行工具将与侦听默认端口 (5432) 的服务器通信。

您可以通过port/etc/postgresql/$VERSION/main/postgresql.conf文件中查找相关服务器的变量来确定每个服务器正在侦听的端口。

要让命令行工具默认与其他服务器通信,您有两个选择:

首先,您可以通过编辑前面提到的配置文件然后重新启动两台服务器来切换两台服务器正在侦听的端口(您可能希望在启动前停止每台服务器)。

或者,您可以将PGPORT环境变量设置为所需默认服务器的端口号。这应该会影响所有使用 PostgreSQL 客户端库的应用程序。


要列出每个数据库集群的内容,请使用psql -l -p PORT_NUMBER. 要迁移数据,请参阅PostgreSQL 文档中的“ 24.4. 版本间迁移”部分。

通过减少磁盘写入,删除旧版本的 PostgreSQL 可以减少笔记本电脑和 SSD 的磨损。


Joh*_*nds 6

正如詹姆斯/布莱斯正确指出的那样,这两个版本将在不同的端口上运行。

但是,命令行实用程序也将作为一个版本运行。例如pg_dump --version可能会给您带来意想不到的结果。

您可以在名为的文件中进行配置~/.postgresqlrc

首先,您需要知道集群名称,要找到它,请运行以下命令:

$ pg_lsclusters
Run Code Online (Sandbox Code Playgroud)

这将输出可用的集群,例如在我运行 9.6 和 13 的系统上:

Ver Cluster Port Status Owner    Data directory               Log file
9.6 main    5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
13  main    5433 online postgres /var/lib/postgresql/13/main  /var/log/postgresql/postgresql-13-main.log
Run Code Online (Sandbox Code Playgroud)

然后创建文件~/.postgresqlrc并输入以下内容来控制使用的默认版本:

# Version Clustername Database
13 main postgres
Run Code Online (Sandbox Code Playgroud)

更改13为您想要默认运行的版本,在这个问题中,它将是8.49.0