无法访问 postgres 中的架构

Can't access to schema in postgres

假设我在 Postgres

中实现了这个 "simple" 数据库
postgres=# CREATE ROLE my_role;
           CREATE DATABASE my_db;
           GRANT ALL ON DATABASE my_db TO my_role;
           CREATE SCHEMA my_schm AUTHORIZATION my_role;

然后我想做一个table:

postgres=#CREATE TABLE IF NOT EXIST my_db.my_schm.table(...);

并得到以下错误: cross-database references are not implemented: "my_db.my_schm.table"

在此之后,我尝试创建连接到数据库的 table(即 \c my_db)并收到以下错误:

schema "my_schm"does not exist

所以,我不明白这些错误的行为,假设角色拥有对数据库的所有权限(是的,我也尝试使用 SET ROLE my_role;)但是当我要求显示my_db 中的模式确实 my_schm 不存在,但在 Postgres 中它确实存在。有人可以向我解释为什么会这样吗?还有如何在 my_schm 中对 table 进行分组?

模式仅存在于一个数据库中,并在 当前 数据库中创建:您在 postgres 数据库中创建了模式,而不是在 mydb 中。

您需要先连接到 mydb 数据库才能在 mydb 数据库中创建模式。