无法查看创建的架构内的任何关系

2023-12-01

我启动了一个 postgres 容器。它通过放置在 docker-entrypoint 文件夹中的 .sql 文件创建模式和表。我的架构列在 \dn+ 中。但 \dt 没有给出任何关系。访问权限完好无损。

执行 \dn+ 给出:

 List of schemas:

  Name  |  Owner   |  Access privileges   |      Description
--------+----------+----------------------+------------------------
 MYAPP    | postgres |                      |
 public | postgres | postgres=UC/postgres+| standard public schema
        |          | =UC/postgres         |

执行 \dt 给出:(在公共模式内)

 Did not find any relations.

但是,我的 .sql 文件可以在同一数据库内的公共模式内创建表。并且 \dt 正确显示表列表。

为什么我无法在非公共模式中创建表。有权限限制吗?

sql内容如下:

CREATE SCHEMA "MYAPP";

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA MYAPP TO postgres;

CREATE TABLE "MYAPP"."ACCESS_MASTER" ("ACCESS_ID" character varying COLLATE pg_catalog."default" NOT NULL,"ROLE_ID" character varying COLLATE pg_catalog."default");

这是怎么回事?请指导。

Edit :

IMCDB=# \dn

 List of schemas
  Name  |  Owner
--------+----------
 MYAPP   | postgres
 public | postgres
(2 rows)

MYAPP=# \dt
Did not find any relations.

IMCDB=# set search_path="MYAPP";
SET

MYAPP=# \dt
Did not find any relations.

MYAPP=# show search_path;
 search_path
-------------
 "MYAPP"
(1 row)

MYAPP=# \dt
Did not find any relations.
MYAPP=#

设置我的模式的路径也没有帮助。


\dt 将仅列出默认架构中存在的关系,该架构在您的情况下是公开的。

您需要将 search_path 设置为 MYAPP,之后,它将列出模式 MYAPP 中存在的所有关系。

postgres=# show search_path;
LOG:  statement: show search_path;
   search_path   
-----------------
 "$user", public
(1 row)


postgres=# set search_path="MYAPP";
SET

postgres=# show search_path;

 search_path 
-------------
 "MYAPP"
(1 row)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法查看创建的架构内的任何关系 的相关文章

随机推荐