在pgAdmin 4中,查看当前的schema默认是哪个,通常涉及到检查数据库的search_path设置,因为search_path决定了在没有明确指定schema的情况下,系统将会在哪个schema中查找对象。以下是一步一步的指南,帮助你查看当前的默认schema:
1.打开pgAdmin 4并连接到数据库:
启动pgAdmin 4。
在左侧的对象浏览器中,找到你想要检查的数据库,并连接到它。
2.查询当前的search_path:
在pgAdmin 4的查询工具中,打开一个新的查询窗口。
输入以下SQL命令来查看当前的search_path设置:
sql复制代码 SHOW search_path;
执行查询。
1;解读查询结果:
查询结果将显示当前的search_path,这是一个由schema名称组成的列表,用逗号分隔。
列表中的第一个schema通常是默认的schema,因为在没有指定schema的情况下,PostgreSQL会首先在这个schema中查找对象。
2.注意事项:
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 有特定的含义:
1.$user:
这表示与当前数据库用户同名的 schema。例如,如果有一个名为 john 的用户,并且存在一个名为 john 的 schema,那么 $user 将指向 john 这个 schema。这是 PostgreSQL 提供的一个方便的特性,允许每个用户有自己的私有 schema。
2.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 命令。