我启动了一个 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(使用前将#替换为@)