这不起作用,导致出现错误:关系“user”不存在
select * from "user"
这个可以做到
select * from "dbo"."user"
这不起作用,导致出现错误:关系“user”不存在
select * from "user"
这个可以做到
select * from "dbo"."user"
未经模式限定的表会在search_path
上进行搜索。这并不会搜索每个模式。默认情况下,它只会搜索以下内容:
pg_catalog
(始终是第一个,不列在search_path
上)pg_temp
表空间(隐含的,不列在search_path
上)search_path
中列为$user
public
模式如果您想让PostgreSQL在其他地方查找,您必须修改search_path
以告诉它,或者完全模式限定名称。
请参见 PostgreSQL手册中的search_path
。
另外,请注意,与某些数据库不同,名称dbo
在PostgreSQL中没有特殊意义。它只是另一个名称而已。
search_path
在视图创建时被解析并固定在视图中。在视图和函数中明确限定引用是一个好的实践,而不是依赖于搜索路径。 - undefinedsearch_path
中。然而,在从搜索路径中删除模式之后,看起来视图并没有重构...不幸的是,我没有时间测试这个假设,谢谢您的回复。 - undefined
search_path
不包括dbo
模式。SHOW search_path;
的输出是什么? - undefined""$user",public"
。 - undefineddbo
的身份连接的吗? - undefinedpostgres
- undefinedsearch_path
上。所以你必须使用模式限定它。这就是拥有模式的意义所在。 - undefined