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

调用supabase db reset出现内存不足错误,求解决方案

问题

执行supabase db reset命令时出现错误:failed to send batch: ERROR: Out of memory (SQLSTATE XX000)。经排查,问题源于一个使用PostgreSQL net扩展的数据库迁移脚本,函数代码如下:

-- Function to send Slack notification for new users
CREATE OR REPLACE FUNCTION public.send_slack_new_user_notification(new_user_record jsonb)
    RETURNS void
    LANGUAGE plpgsql
    SECURITY DEFINER
    set search_path = public
AS
$function$
DECLARE
  _project_url text;
  _anon_key text;
  _url text;
  _headers jsonb;
BEGIN
  -- Get project URL and anon key dynamically
  SELECT public.get_project_url() INTO _project_url;
  SELECT public.get_anon_key() INTO _anon_key;

  -- Construct the full function URL
  _url := format('%s/functions/v1/on_new_user_slack_notify', _project_url);

  -- Construct the headers with the anon key
  _headers := format('{"Content-Type": "application/json", "Authorization": "Bearer %s"}', _anon_key)::jsonb;

  -- Perform a web request to our Edge Function
  select "net"."http_post"(
    url:= _url,
    body:=jsonb_build_object('record', new_user_record),
    headers:= _headers
  );
END;
$function$;

注释掉HTTP请求代码后,supabase db reset可正常执行。尝试调整db.settings中的shared_buffers、work_mem、maintenance_work_mem等内存参数,问题仍未解决。

解决方案
  • 迁移脚本仅创建函数,不执行外部请求:迁移的核心是变更数据库结构,执行外部HTTP请求会让迁移依赖外部服务,还容易引发内存问题。建议只在迁移中定义函数,将实际的HTTP请求触发逻辑放到业务代码或PostgreSQL触发器中(比如用户创建时触发),避免迁移阶段执行外部调用。
  • 给HTTP请求添加超时限制:net扩展的http_post如果遇到目标服务响应缓慢或返回大体积数据,会持续占用内存。给请求添加超时参数,强制终止超时请求:
    select "net"."http_post"(
      url:= _url,
      body:=jsonb_build_object('record', new_user_record),
      headers:= _headers,
      timeout_milliseconds:= 3000 -- 设置3秒超时
    );
    
  • 优化PostgreSQL内存参数:除了常规参数,调整max_worker_processes减少并发进程数,temp_buffers调大以避免临时数据溢出到磁盘引发的间接内存压力;同时确保work_mem设置合理,避免单个请求占用过多内存。
  • 拆分迁移与业务逻辑:将函数创建和首次执行分离,迁移脚本只完成函数定义,函数的实际调用放到应用启动后的初始化流程中,彻底避免迁移阶段的外部请求操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:33:24