无法访问 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
数据库中创建模式。
假设我在 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
数据库中创建模式。