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

Supabase连接自动终止无法加载Schema问题求助

Next.js + Prisma + Supabase 数据库连接自动终止问题

问题背景

我正在开发基于Next.js、PostgreSQL+Prisma的项目,通过Supabase创建数据库,使用.env文件中的DATABASE_URL关联Prisma Schema。执行prisma migrate dev命令时终端无报错,可成功连接数据库并完成迁移,但数分钟后Supabase日志出现“Tenant has no connected users, database connection will be terminated”错误。已检查配置、更新依赖,问题仍未解决,附上相关代码及截图,寻求原因分析。

Prisma Schema 代码

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model User {
  id            Int            @id @default(autoincrement())
  address       String         @unique
  tasks         Task[]
}

model Worker {
  id               Int         @id @default(autoincrement())
  address          String      @unique
  submissions      Submission[]
  balance_id       Int 
  pending_amount   Int
  locked_amount    Int
}

model Task{
  id            Int            @id @default(autoincrement())
  title         String
  user_id       Int
  user          User           @relation(fields: [user_id], references: [id])
  options       Option[]
  submissions   Submission[]
  signature     String
  amount        String
}

model Option {
  id            Int            @id @default(autoincrement())
  image_url     String
  option_id     Int
  task_id       Int 
  task          Task           @relation(fields: [task_id], references: [id])
  submissions   Submission[]
}

model Submission{
  id            Int            @id @default(autoincrement())
  worker_id     Int
  worker        Worker         @relation(fields: [worker_id], references: [id])
  option_id     Int
  option        Option         @relation(fields: [option_id], references: [id])
  task_id       Int
  task          Task           @relation(fields: [task_id], references: [id])
  amount        String
}

相关截图

  • Supabase控制台实时日志截图
  • Pooler日志截图
  • 数据库连接状态截图

可能的原因分析

  • Prisma连接池默认行为:Prisma默认连接池在无活跃请求时会主动释放连接,Supabase的数据库检测到无连接用户后,会触发资源优化机制终止连接。这属于正常的资源回收逻辑,后续有请求时会自动重建连接,仅可能带来短暂延迟。
  • Supabase连接池超时设置:Supabase的PgBouncer连接池可能配置了较短的空闲连接超时时间,当连接空闲超过阈值就会被回收。可在Supabase控制台的数据库设置中查看并调整连接池的空闲超时参数。
  • 开发环境无持续连接:开发阶段只有执行migrate或发起API请求时才会建立数据库连接,无操作时连接会被释放,进而触发Supabase的日志提示。这是开发环境的正常现象,若生产环境需要保持长连接,需调整Prisma的连接池配置(如增加idle_timeout等参数)。
  • Prisma客户端未全局复用:若代码中每次请求都创建新的Prisma客户端实例,会导致连接频繁创建和销毁,更容易触发连接终止提示。需确保项目中全局复用单一Prisma客户端实例(如创建prisma.ts文件导出单例)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:43:11