【问题标题】:Can't access to schema in postgres无法访问 postgres 中的模式
【发布时间】:2020-05-24 07:52:58
【问题描述】:

假设我在 Postgres 中实现了这个“简单”的数据库

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;

然后我想制作一张桌子:

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

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

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

schema "my_schm"does not exist

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

【问题讨论】:

  • 为什么不CREATE TABLE IF NOT EXIST my_db.table(...);

标签: sql postgresql privileges


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-02-21
    • 2014-09-16
    • 2016-07-12
    • 2013-07-14
    • 1970-01-01
    • 2021-04-16
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多