尽管搜索路径不同,为什么 postgresql 中的表会在 public 模式中创建?

Why do tables in postgresql get created in public schema despite a different search path?

我正在尝试让特定角色只能访问特定架构。

我有架构 public 和架构 python。我想将角色的默认 search_path 设置为架构 python:

ALTER ROLE user2 SET search_path = python;

然而,当我尝试创建表时,它们仍然被放置在 public 架构中,我是否必须在每次创建表时都指定架构名称?

CREATE TABLE table ();

-- vs.

CREATE TABLE python.table ();

ALTER ROLE ... SET ...下次登录时生效。要在当前会话中立即生效(仅),请使用 SET search_path TO myschema;