已安装 pgcrypto 扩展,但其功能不可用

已安装 pgcrypto 扩展,但其功能不可用

在客户端服务器上,我遇到了一个问题 - 我没有权限创建扩展pgcrypto。因此,服务器管理员为我创建了扩展,现在我可以看到pg_available_extensionspgcrypto安装 ( 1.1),但是我无法使用其功能:

=> select gen_random_uuid();
ERROR:  function gen_random_uuid() does not exist
LINE 1: select gen_random_uuid();
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

另外,我没有删除扩展的权限(这可能是问题的线索?):

=> drop extension pgcrypto;
ERROR:  must be owner of extension pgcrypto

知道哪里出了问题吗?为什么我看不到pgcrypto函数?与权限有关吗?

答案1

几种可能的解释:

  • PostgreSQL 版本早于 9.4。gen_random_uuid()以前不存在 此功能http://www.postgresql.org/docs/9.4/static/release-9-4.html

    将 UUID 随机数生成器 gen_random_uuid() 添加到 pgcrypto (Oskari Saarenmaa)

    用于select version();检查版本。

  • 或者它是 9.4+,但扩展是在不属于您的 SQL 会话的架构中创建的search_path。使用 psql 中的元命令\dx列出已安装的扩展,并检查Schema列。

  • 或者扩展位于 中包含的架构中search_path,但数据库用户缺乏查看它的权限。使用 授予它:GRANT USAGE ON SCHEMA schema_name TO role_name

相关内容