Postgres“系统数据库”属性如何设置或取消设置?

问题描述 投票:0回答:2

Postgres 10.15集群中的几个数据库之一已被设置为系统数据库。造成这种情况的机制尚不清楚,但可能是在通过更新

pg_database
表将数据库转换为模板的同时发生的。然而,
pg_database
表没有控制数据库是否为系统数据库的设置,并且我找不到任何描述如何设置(或取消设置,这是我真正想做的)系统数据库的文档旗帜。

postgresql pgadmin
2个回答
1
投票

“系统数据库”的概念对于 PostgreSQL 来说是陌生的,它是 pgAdmin 的一个神器。

PostgreSQL 确实有“模板数据库”的概念,即一个旨在为

CREATE DATABASE
中的模板提供服务的数据库。您可以使用

将数据库转换为模板数据库
ALTER DATABASE some_db IS_TEMPLATE TRUE;

对于这样的数据库,禁止连接也是一个好主意,因为只有在没有其他人连接到它的情况下,您才能使用数据库作为模板:

ALTER DATABASE some_db ALLOW_CONNECTIONS FALSE;

0
投票

pgAdmin 中的“系统”属性是为具有

OID <= 16383

的对象设置的

您无法设置或更改此 OID。您可以做的最接近的操作是复制“系统”数据库,将其用作

CREATE DATABASE tmpdb TEMPLATE systemdb;
中的模板,然后重命名旧数据库和新数据库。
CREATE DATABASE
分配一个新的 OID > 16383。

© www.soinside.com 2019 - 2024. All rights reserved.