Next.js集成Prisma与Supabase执行迁移遇P1001连接错误求助
Prisma连接Supabase数据库失败(P1001错误)排查方案
问题详情
我正在学习将Prisma和Supabase集成到Next.js应用中,执行npx prisma migrate dev --name init命令时触发了以下错误:
Environment variables loaded from .env
Prisma schema loaded from prisma\schema.prisma
Datasource "db": PostgreSQL database "postgres", schema "public" at "db.xocheossqzkirwnhzxxm.supabase.co:5432"Error: P1001: Can't reach database server at
db.xocheossqzkirwnhzxxm.supabase.co:5432Please make sure your database server is running at
db.xocheossqzkirwnhzxxm.supabase.co:5432.
我的数据库密码不含特殊字符,相关配置文件如下:
schema.prisma 内容
// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model Home{ id String @id @default(cuid()) image String? title String description String price Float guests Int beds Int baths Int createdAt DateTime @default(now()) updateAt DateTime @updatedAt }
.env 内容
DATABASE_URL="postgresql://postgres:[YOUR-PASSWORD]@db.xocheossqzkirwnhzxxm.supabase.co:5432/postgres"
排查与解决步骤
- 确认Supabase数据库状态:登录Supabase控制台,查看项目数据库是否正常运行,未被暂停或删除。
- 检查IP白名单:在Supabase项目的「数据库」→「网络访问」中,确认当前设备的公网IP已添加到白名单,或临时开启「允许所有IP」(仅用于测试,生产环境务必限制IP范围)。
- 验证DATABASE_URL:
- 从Supabase控制台「设置」→「数据库」→「连接字符串」复制完整的PostgreSQL连接地址,替换本地.env文件中的内容,确保
[YOUR-PASSWORD]已替换为实际密码。 - 检查URL中的主机名、端口号(Supabase默认5432)是否拼写正确。
- 从Supabase控制台「设置」→「数据库」→「连接字符串」复制完整的PostgreSQL连接地址,替换本地.env文件中的内容,确保
- 测试网络连通性:在终端执行
ping db.xocheossqzkirwnhzxxm.supabase.co或telnet db.xocheossqzkirwnhzxxm.supabase.co 5432,确认本地网络能访问该服务器,若不通则检查防火墙、代理是否限制了5432端口。 - 重新生成Prisma客户端:执行
npx prisma generate后,再次尝试运行迁移命令。
内容的提问来源于stack exchange,提问作者Jacob Mutale
相关产品推荐
相关产品推荐

