我希望找到当前用户的search_path并永久修改它。
我可以使用show search_path
找到它,但是当我尝试使用下面的查询查找时,它将什么也不返回
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'
我的问题是:
show search_path
以"$user", public
的形式返回默认值。show search_path
并使用下面的命令向其追加myschema,可以永久地设置当前用户的show search_path
吗?ALTER ROLE vishal in DATABASE mydb set search_path = "$user", public, myschema;
发布于 2019-08-30 12:45:39
如果您想找出设置是从哪里来的,请尝试pg_settings
SELECT setting, source, boot_val, reset_val, sourcefile, sourceline
FROM pg_settings
WHERE name = 'search_path';
然后,您可以看到当前设置的源。
这将帮助您了解为什么两个会话具有不同的search_path
集。
您可以按照您的建议使用search_path
设置您的ALTER ROLE ... IN DATABASE
,但请注意
SET
命令覆盖。https://stackoverflow.com/questions/57726737
复制相似问题