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

使用Prisma与Supabase构建商店数据库时遭遇prisma.user.count()执行错误求助

解决Prisma + Supabase 中"prepared statement does not exist"错误

问题详情

使用Prisma搭配Supabase构建商店数据库时,执行prisma.user.count()这类查询时反复触发如下错误:

Invalid prisma.user.count() invocation:

Error occurred during query execution:
ConnectorError(ConnectorError { user_facing_error: None, kind: QueryError(PostgresError { code: "26000", message: "prepared statement "s4" does not exist", severity: "ERROR", detail: None, column: None, hint: None }), transient: false })

怀疑问题和查询频率有关,但未在Supabase文档中找到对应解决方案。

可行解决方案

1. 禁用预准备语句

Prisma默认启用的预准备语句在Supabase环境下可能出现兼容性问题,直接在schema.prisma的数据源配置中关闭:

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
  prepareConnection = "SET prepared_statements = off;"
}

修改后执行prisma generate更新客户端,再重新测试查询。

2. 确保Prisma Client单例复用

频繁创建Prisma Client实例会导致连接池异常,务必全局复用一个单例:

// Node.js环境示例
import { PrismaClient } from '@prisma/client'

const prisma = global.prisma || new PrismaClient()

if (process.env.NODE_ENV !== 'production') global.prisma = prisma

export default prisma

3. 调整连接池参数(可选)

如果是高并发场景导致的连接异常,可在schema.prisma中添加连接池配置:

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
  pool_size = 10 // 根据业务调整,默认5
  pool_timeout = 30 // 连接超时时间,单位秒
}

4. 重置Supabase数据库

登录Supabase控制台,进入目标项目的Settings > Database,点击"Restart Database"清除无效的预准备语句缓存。

5. 更新Prisma版本

旧版本Prisma可能存在PostgreSQL兼容性bug,执行以下命令更新到最新稳定版:

npm update @prisma/client prisma
prisma generate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:00:14