我正在尝试使用pg_cron来调度对Postgres Cloud SQL示例中几个数据库上的存储过程的调用。
遗憾的是,pg_cron看起来只能在Postgres DB上创建
当我尝试在不同于postgres的数据库上使用pg_cron时,收到以下消息:
CREATE EXTENSION pg_cron;
ERROR: can only create extension in database postgres
Detail: Jobs must be scheduled from the database configured in
cron.database_name, since the pg_cron background worker reads job
descriptions from this database. Hint: Add cron.database_name =
'mydb' in postgresql.conf to use the current database.
Where: PL/pgSQL function inline_code_block line 4 at RAISE
Query = CREATE EXTENSION pg_cron;
..。我不认为我有权访问Cloud SQL中的postgresql.conf...还有别的办法吗?也许我可以使用postgres_fdw来实现我的目标?
谢谢,
2条答案
按热度按时间f3temu5u1#
不需要编辑任何文件。您所要做的就是设置
cloudsql.enable_pg_cron
标志(参见指南),然后在postgres数据库中创建扩展。你需要登录到Postgres数据库,而不是你正在为应用程序使用的数据库。对我来说,这只是将我的应用程序数据库的名称替换为‘postgres’。
然后,只需运行CREATE EXTENSION命令,就会出现cron.job表。这是我几分钟前在我们的Cloudsql数据库中执行的一项操作。我正在使用CloudSQL代理访问远程数据库:
在设置计划时,请注意指定正确的目标数据库,否则它会认为您希望作业在postgres数据库中运行
xzv2uavs2#
。。我不认为我有权访问Cloud SQL中的postgresql.conf...
实际上是有的,您可以使用patch命令。
根据pg_cron doc,您需要在conf文件中更改两项内容:
1.共享预加载库=‘pg_cron’
1.cron.database_name=‘Another_TABLE’#optionnaly更改pg_cron后台工作程序希望在其中创建其元数据表的数据库
现在,根据gcloud
您需要在示例上设置两个标志:
小心,不要两次使用命令“patch”,因为这样会删除第一个设置。将所有更改放在一个命令中