我正在尝试为Azure PostgreSQL Flexible服务器安装pg cron扩展。根据此处的文件:https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-extensions#postgres-13个扩展pg_cron是可用的扩展,但当我尝试安装它时:
create schema cron_pg;
CREATE EXTENSION pg_cron SCHEMA cron_pg;
我得到的是:
SQL Error [0A000]: ERROR: extension "pg_cron" is not allow-listed for "azure_pg_admin" users in Azure Database for PostgreSQL
Hint: to see the full allow list of extensions, please run: "show azure.extensions;"
执行时:
show azure.extensions;
pg_cron丢失:
address_standardizer,address_standardizer_data_us,amcheck,bloom,btree_gin,btree_gist,citext,cube,dblink,dict_int,dict_xsyn,earthdistance,fuzzystrmatch,hstore,intagg,intarray,isn,lo,ltree,pageinspect,pg_buffercache,pg_freespacemap,pg_partman,pg_prewarm,pg_stat_statements,pg_trgm,pg_visibility,pgaudit,pgcrypto,pgrowlocks,pglogical,pgstattuple,plpgsql,postgis,postgis_sfcgal,postgis_tiger_geocoder,postgis_topology,postgres_fdw,sslinfo,tablefunc,tsm_system_rows,tsm_system_time,unaccent,uuid-ossp,lo,postgis_raster
我做错了什么?
很晚了,但当我搜索相同的问题但使用pg_trgm扩展时,这个问题出现了。经过一番环顾,最终意识到您只需要更新数据库设置。
转到Azure门户中的数据库,然后转到服务器参数并搜索Azure.extensions参数。然后,您可以单击列表并启用/禁用所需的扩展(PG_CRON可用(,服务器将在保存时重新启动,然后您将能够在数据库中启用扩展。
您可以通过更新作业表中的database
列作业来告诉pg_cron在另一个数据库中运行作业。
例如:
UPDATE cron.job SET database = 'wordpress' WHERE jobname = 'wordpress-job';
默认情况下,在默认的"postgres"数据库中似乎已经启用了pg_cron扩展。我之所以没有看到这一点,是因为我没有使用默认的"postgres"数据库。我已经创建了自己的数据库,并连接到该数据库。这实际上并不能解决我的问题,因为我无法跨数据库执行pg_cron中的作业。。。