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

Prisma连接Supabase PostgreSQL报P1001错误的原因与解决方法

解决Prisma连接Supabase出现P1001错误的问题

错误原因分析

从报错信息和你的配置来看,核心问题出在DIRECT_URL的域名与端口不匹配:

  • Supabase的连接池器域名(pooler.supabase.com)仅开放6543端口用于连接池访问,5432端口并未在该域名下监听
  • 你将DIRECT_URL指向了pooler域名的5432端口,导致无法建立连接
  • 另外也可能存在以下次要原因:密码占位符未替换、本地防火墙拦截5432端口、SSL配置异常

解决步骤

  1. 修正DIRECT_URL的域名
    Supabase的直连数据库需要使用项目的主域名(而非pooler域名),格式为aws-0-[region].supabase.co。你可以在Supabase控制台的「数据库」→「连接字符串」中找到正确的直连URL(不带pgbouncer=true参数的那个)。
    修正后的.env配置示例:

    DATABASE_URL="postgresql://postgres.ecvujsgsaevhjcvlslbw:your_real_password@aws-0-eu-central-2.pooler.supabase.com:6543/postgres?pgbouncer=true&sslmode=require"
    DIRECT_URL="postgresql://postgres.ecvujsgsaevhjcvlslbw:your_real_password@aws-0-eu-central-2.supabase.co:5432/postgres?sslmode=require"
    
  2. 替换密码占位符
    确保.env文件中的[password]替换为Supabase控制台中真实的数据库密码(可在「数据库」→「数据库密码」页面查看或重置)。

  3. 检查本地网络限制

    • 关闭Windows Defender防火墙或添加出站规则,允许Node.js/Prisma访问5432和6543端口
    • 如果你使用了代理工具,确认代理未拦截这两个端口的流量
  4. 测试连接有效性
    使用psql或其他数据库客户端工具,分别测试DATABASE_URL和修正后的DIRECT_URL是否能正常连通,排除网络或凭证问题。

  5. 重新执行命令
    完成上述修正后,重新运行:

    pnpm dlx prisma db push
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:22:12