我在数据库中使用hstores并且在权限方面遇到问题。以超级用户身份登录时,一切正常,但使用"正常"登录角色,我似乎无法在hstore中选择一个值:
mydb=> select properties->'foo' from t1;
ERROR: permission denied for function fetchval
选择hstore本身确实有效,所以它似乎不是一个表访问权限问题:
mydb=> select properties from t1;
properties
----------------------------
"baz"=>"foz", "foo"=>"bar"
(1 row)
我尝试在线搜索此错误,但结果为零。另外,我在函数列表中找不到fetchval
函数。
答案 0 :(得分:1)
fetchval
是与->
上的hstore
运算符对应的函数。
可能您已撤销从非特权用户执行hstore函数的权利。
例如,如果hstore
扩展名存在于public
架构中,并且您运行类似的内容:
revoke execute on all functions in schema public from public;
然后,用户将有权选择hstore
内容,但在尝试应用ERROR: permission denied for function fetchval
运算符时会收到以下错误消息:->
。
要解决此问题,您可能需要重新访问安全策略并以不同方式处理函数权限。