PostgreSQL: 无法查看模式。

4

我正在使用PostgreSQL 12和pgAdmin4。我从pgAdmin4创建了两个新模式,在数据库testingDB中分别为mlweb。但是,当我从终端访问它们时,我只能看到public模式。如何查看其他模式?

$ psql -U awspostgres -h address -p 5432 -d testingDB

pgAdmin

terminal access


用户可能没有新模式的权限。 - dassum
有什么建议可以改变权限吗?我正在使用 AWS RDS 用于 PostgreSQL。 - Peter
无法解释您的评论。请使用创建模式的相同用户尝试,看看是否存在权限问题。 - dassum
2个回答

8

如果你想让模式中的表可以通过\dt命令看见,请显式指定:

\dt ml.*

或将模式添加到您的 search_path

SET search_path = ml, web, public;

如果您希望对数据库的所有连接都保持更改,请使后一个更改是持久性的。

ALTER DATABASE "testingDB" SET search_path = ml, web, public;

1

Postgres 可以在一个 DBMS 实例下拥有多个数据库。请确保通过在 psql 命令中使用 -d 标志指定名称来连接到数据库:

$ psql -U awspostgres -h address -p 5432 -d <db name> testingDB

一旦连接到Postgres(即使在启动psql时未提供数据库名称),您可以使用\ l显示数据库,并使用\ c 连接到其中一个。

是的,我这么做了,但结果还是一样的...我创建了随机模式-> CREATE SCHEMA testing; 但是当我键入\dt时,我只能看到公共模式...但是当我从pgAdmin中访问它们时,我可以看到该模式。 - Peter
@Peter 如果你执行 select catalog_name, schema_name, schema_owner from information_schema.schemata 会发生什么?还有 select datname, datdba, datistemplate, datallowconn, datconnlimit, datact from pg_database ? - Z4-tier
有一系列的模式和所有的表格。在第二行中,我收到了datname=testingDB,datdba=16398,datistemplate=f,datallowconn=t,datconnlimit=-1。通过下面的答案解决了我的问题。 - Peter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接