在pgAdmin 4中,查看当前的schema默认是哪个,通常涉及到检查数据库的search_path
设置,因为search_path
决定了在没有明确指定schema的情况下,系统将会在哪个schema中查找对象。以下是一步一步的指南,帮助你查看当前的默认schema:
- 打开pgAdmin 4并连接到数据库:
- 启动pgAdmin 4。
- 在左侧的对象浏览器中,找到你想要检查的数据库,并连接到它。
- 查询当前的search_path:
- 在pgAdmin 4的查询工具中,打开一个新的查询窗口。
- 输入以下SQL命令来查看当前的
search_path
设置:
sql复制代码
SHOW search_path;
- 执行查询。
- 解读查询结果:
- 查询结果将显示当前的
search_path
,这是一个由schema名称组成的列表,用逗号分隔。 - 列表中的第一个schema通常是默认的schema,因为在没有指定schema的情况下,PostgreSQL会首先在这个schema中查找对象。
- 注意事项:
search_path
也可以在会话级别或数据库级别进行设置。在会话级别设置会影响当前会话,而在数据库级别设置会影响连接到该数据库的所有会话。- 你可以使用
SET search_path TO schema_name;
命令在会话级别更改search_path
,或使用ALTER DATABASE database_name SET search_path TO schema_name;
命令在数据库级别更改它。
- 总结:
- 通过查询
SHOW search_path;
,你可以轻松地找到当前的默认schema。这个设置决定了在不指定schema时,PostgreSQL会在哪个schema中查找对象。
当你在 PostgreSQL 的 search_path
设置中看到 $user
, public
这样的值时,它们代表了特定的 schema 搜索顺序。这里的 $user
和 public
有特定的含义:
$user
:
这表示与当前数据库用户同名的 schema。例如,如果有一个名为john
的用户,并且存在一个名为john
的 schema,那么$user
将指向john
这个 schema。这是 PostgreSQL 提供的一个方便的特性,允许每个用户有自己的私有 schema。public
:public
是一个在所有 PostgreSQL 数据库中默认存在的特殊 schema。任何用户都可以在其中创建对象(如表、视图、函数等),除非有特定的权限设置阻止他们这样做。
当你在 search_path
中看到 "$user",public
这样的设置时,它表示当查询一个对象(如表)时,PostgreSQL 会首先在当前用户的同名 schema 中查找,如果找不到,则会在 public
schema 中查找。
例如,如果你有一个名为 john
的用户,并且你尝试查询一个名为 my_table
的表,PostgreSQL 会首先在 john
schema 中查找 my_table
,如果找不到,则会在 public
schema 中查找。
你可以使用以下 SQL 命令来查看当前的 search_path
设置:
sql复制代码
SHOW search_path;
如果你想要更改 search_path
,你可以使用 SET
命令,例如:
sql复制代码
SET search_path TO "$user", public;
这将把当前会话的 search_path
设置为首先在当前用户的同名 schema 中查找,然后在 public
schema 中查找。注意,这个更改只会影响当前的会话。如果你想要永久地更改一个数据库的 search_path
,你需要修改数据库的配置或使用 ALTER DATABASE
命令。