pgcrypto extension está instalada, mas suas funções não estão disponíveis

0

No servidor do cliente, tive um problema - não tive permissão para criar a extensão pgcrypto . Então, o administrador do servidor fez isso para mim e agora posso ver em pg_available_extensions que pgcrypto está instalado ( 1.1 ), mas suas funções não estão disponíveis para mim:

=> 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.

Além disso, não tenho permissões para descartar a extensão (o que pode indicar o que há de errado?):

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

Alguma ideia do que está errado e porque não consigo ver pgcrypto funções? Algo com permissões?

    
por user606521 29.02.2016 / 09:57

1 resposta

6

Várias explicações possíveis:

  • A versão do PostgreSQL é anterior a 9.4. Esta função gen_random_uuid() não existia antes link :

    Add UUID random number generator gen_random_uuid() to pgcrypto (Oskari Saarenmaa)

    Use select version(); para verificar a versão.

  • ou é 9.4+, mas a extensão foi criada em um esquema que não está na search_path de sua sessão SQL. Use o meta-comando \dx no psql para listar as extensões instaladas e verifique a coluna Schema .

  • ou a extensão está em um esquema incluído em search_path , mas o usuário do banco de dados não tem permissão para pesquisá-lo. Conceda com: GRANT USAGE ON SCHEMA schema_name TO role_name .

por 03.03.2016 / 15:40

Tags