prisma 错误:p1001:无法访问位于“db.xocheossqzkirwnhzxxm.supabase.co”的数据库服务器:“5432”

Jac*_*ale 3 postgresql next.js prisma supabase-database

我开始学习 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`:`5432`

Please make sure your database server is running at `db.xocheossqzkirwnhzxxm.supabase.co`:`5432`.
Run Code Online (Sandbox Code Playgroud)

我的数据库密码不包含任何特殊字符,这是我的 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
}
Run Code Online (Sandbox Code Playgroud)

这是我的.env:

DATABASE_URL="postgresql://postgres:[YOUR-PASSWORD]@db.xocheossqzkirwnhzxxm.supabase.co:5432/postgres"
Run Code Online (Sandbox Code Playgroud)

Jed*_*eel 9

我在使用 Prisma 和 PlanetScale (MySQL) 以及 Windows 上的 Docker (WSL) 的 Sveltekit 应用程序中遇到了类似的问题。我收到了同样的错误,但当我直接从终端运行它或通过 mysql cli 连接时没有遇到此问题。

解决方案

我确保我的 Docker Node 版本与 WSL (16.15) 上的版本相同,我注意到其他人在不同版本的 Node 上也遇到了这个问题,因此值得探索一下。然后,我添加connect_timeout=300到 SQL URL以防止连接过早超时。

我在 Stackoverflow 上的其他答案中包含了更多详细信息。