create schema extensions;
-- make sure everybody can use everything in the extensions schema
grant usage on schema extensions to public;
grant execute on all functions in schema extensions to public;
-- include future extensions
alter default privileges in schema extensions
grant execute on functions to public;
alter default privileges in schema extensions
grant usage on types to public;
3条答案
按热度按时间dw1jzc5e1#
CREATE EXTENSION unaccent;
将扩展安装到公共模式中。要使其可用,只需包含以下内容以更改search_path:或者最好创建一个包含所有扩展的模式,然后总是将该模式附加到search_path。
现在安装扩展:
然后使用将该模式包含在search_path中
如果不想对创建的每个新数据库重复上述步骤,请在连接到
template1
数据库时运行上述步骤。甚至可以通过编辑postgresql.conf
或使用alter system
将扩展方案包含在默认search_path中rekjcdws2#
有相同的问题,但@Richard Huxton的回答导致了正确的解决方案:
这很管用!!
正如Richard所说,
pg_catalog
会自动添加到每个search_path
中,添加到那里的扩展会被找到。恕我直言,如果扩展是全局的,这比
schema.func()
好得多。例如,我使用了很多模式,我使用模式
PUBLIC
进行调试--所有的东西都应该在自己的模式中,如果有东西在PUBLIC中,那就错了。在
pg_catalog
中创建扩展可以保持所有模式的整洁,并让模式本身像核心postgres的一部分一样工作。gkl3eglg3#
你不需要。如果你愿意,你可以称之为完全合格。
事实上,我相信内置函数始终可用的唯一原因是,无论您做什么,PG都会将pg_catalog添加到search_path的末尾。