首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Postgres:为给定用户查找search_path并永久修改它

Postgres:为给定用户查找search_path并永久修改它
EN

Stack Overflow用户
提问于 2019-08-30 12:25:56
回答 1查看 2.2K关注 0票数 0

我希望找到当前用户的search_path并永久修改它。

我可以使用show search_path找到它,但是当我尝试使用下面的查询查找时,它将什么也不返回

代码语言:javascript
运行
复制
SELECT r.rolname, d.datname, rs.setconfig
FROM   pg_db_role_setting rs
LEFT   JOIN pg_roles      r ON r.oid = rs.setrole
LEFT   JOIN pg_database   d ON d.oid = rs.setdatabase
WHERE  r.rolname = 'vishal' 

我的问题是:

  1. 为什么这2返回不同的结果。如果没有发现,我认为show search_path"$user", public的形式返回默认值。
  2. 通过使用search_path找到当前用户的show search_path并使用下面的命令向其追加myschema,可以永久地设置当前用户的show search_path吗?
代码语言:javascript
运行
复制
ALTER ROLE vishal in DATABASE mydb set search_path = "$user", public, myschema;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-30 12:45:39

如果您想找出设置是从哪里来的,请尝试pg_settings

代码语言:javascript
运行
复制
SELECT setting, source, boot_val, reset_val, sourcefile, sourceline
FROM pg_settings
WHERE name = 'search_path';

然后,您可以看到当前设置的源。

这将帮助您了解为什么两个会话具有不同的search_path集。

您可以按照您的建议使用search_path设置您的ALTER ROLE ... IN DATABASE,但请注意

  1. 在断开和重新连接之前,此设置不会生效。
  2. 该设置将被会话中的任何SET命令覆盖。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57726737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档