You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用PostgreSQL定时任务调用Supabase Edge Function?报错求助

解决PostgreSQL定时任务调用Supabase Edge Function的函数不存在错误

问题根源

你遇到的http_post(unknown) does not exist错误,核心原因是使用了错误的HTTP扩展及函数名:

  • 传统PostgreSQL的http扩展没有http_post函数,且Supabase默认推荐使用pg_net扩展处理HTTP请求,而非旧的http扩展。
  • 即便你之前用GET请求成功,那也是因为误打误撞用了http_get(旧扩展的函数),但POST请求无对应函数,因此报错。

解决方案

1. 启用正确的HTTP扩展pg_net

先在Supabase SQL编辑器中执行以下语句,确保pg_net扩展已启用:

CREATE EXTENSION IF NOT EXISTS pg_net;

2. 使用pg_net的正确函数调用

pg_net扩展中,POST请求的函数是net.http_post,而非http_post。同时需要注意:

  • URL需明确转换为text类型,避免参数类型不匹配
  • 若Edge Function需要请求体或请求头,需补充对应参数(无需求可传空值)

调整后的定时任务代码如下:

SELECT
  cron.schedule(
    'api-test-insert',
    '15 * * * *',
    $$
    SELECT status
    FROM net.http_post(
      url := '<supabase edge function endpoint URL>'::text,
      body := '{}'::jsonb, -- 无请求体时传空JSON即可
      headers := '{"Content-Type": "application/json"}'::jsonb
    )
    $$
  );

3. 额外注意事项

  • 确认Supabase项目已开启pg_net扩展权限(在控制台「数据库」→「扩展」中可查看)
  • 替换URL为实际的Edge Function完整地址,格式如https://<project-ref>.supabase.co/functions/v1/your-function
  • 若Edge Function需要鉴权,需在headers中添加{"Authorization": "Bearer <your-api-key>"}

内容的提问来源于stack exchange,提问作者xkm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:41:59