假设我在postgres中实现了db的“简单”实现
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"
之后,我尝试创建连接到db的表(即。 \c my_db
)出现以下错误:
schema "my_schm"does not exist
因此,我不理解这些错误的行为,假设角色拥有对db的所有权限(是的,我也尝试使用 SET ROLE my_role;
)但当我要求在我的数据库中显示模式时,我的模式确实不存在,但在postgres中确实存在。有人能解释一下为什么会这样吗?以及如何在我的\u schm中对表进行分组?
1条答案
按热度按时间i2byvkas1#
架构只存在于一个数据库中,并且是在当前数据库中创建的:您已经在中创建了架构
postgres
数据库不在mydb
.你需要先连接到
mydb
以便在中创建架构mydb
数据库。