postgresql – 给定数据库和用户的search_path是什么?
我可以看到当前的search_path:
show search_path ; 我可以设置当前会话的search_path: set search_path = "$user",public,postgis; 同样,我可以使用以下命令永久设置给定数据库的search_path: alter database mydb set search_path = "$user",postgis ; 我可以使用以下内容为给定角色(用户)永久设置search_path: alter role johnny set search_path = "$user",postgis ; 但我想知道如何在更改之前确定数据库和角色设置(相对于search_path)?
您可以在目录表
pg_db_role_setting 中找到角色和数据库的配置设置.
此查询检索给定角色或数据库的任何设置: 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 = 'myrole' OR d.datname = 'mydb'; 如果未设置任何内容,则下一个较低实例将确定search_path的默认状态,在这种情况下为postgresql.conf或在服务器启动时为命令行选项.有关: > How does the search_path influence identifier resolution and the “current schema” 要取消设置角色或数据库的任何设置 – 此特定示例中的search_path: ALTER ROLE myrole RESET search_path; 要么: ALTER DATABASE mydb RESET search_path; 要么 ALTER ROLE myrole in DATABASE mydb RESET search_path; 切勿手动操作系统目录(pg_catalog.*)中的数据.按照 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |