在Vercel部署项目时调用prisma.product.findMany()遇无效调用错误求助
部署Prisma+MongoDB Atlas时服务器连接超时错误解决方案
问题描述
添加Prisma后部署网站时,prisma.product.findMany()调用失败,核心报错为服务器选择超时,无可用服务器,伴随I/O错误提示received fatal alert: InternalError,错误代码P2010,Prisma客户端版本5.18.0。
完整错误栈:
PrismaClientKnownRequestError: Invalid `prisma.product.findMany()` invocation: Raw query failed. Code: `unknown`. Message: `Kind: Server selection timeout: No available servers. Topology: { Type: ReplicaSetNoPrimary, Set Name: atlas-3d8clu-shard-0, Servers: [ { Address: ac-fysecpf-shard-00-01.7qknsd4.mongodb.net:27017, Type: Unknown, Error: Kind: I/O error: received fatal alert: InternalError, labels: {} }, { Address: ac-fysecpf-shard-00-00.7qknsd4.mongodb.net:27017, Type: Unknown, Error: Kind: I/O error: received fatal alert: InternalError, labels: {} }, { Address: ac-fysecpf-shard-00-02.7qknsd4.mongodb.net:27017, Type: Unknown, Error: Kind: I/O error: received fatal alert: InternalError, labels: {} } ] }, labels: {}` at _n.handleRequestError (/vercel/path0/node_modules/@prisma/client/runtime/library.js:121:7749) at _n.handleAndLogRequestError (/vercel/path0/node_modules/@prisma/client/runtime/library.js:121:7057) at _n.request (/vercel/path0/node_modules/@prisma/client/runtime/library.js:121:6741) at async l (/vercel/path0/node_modules/@prisma/client/runtime/library.js:130:9355) at async j (/vercel/path0/.next/server/pages/produto/[id].js:1:2826) at async buildStaticPaths (/vercel/path0/node_modules/next/dist/build/utils.js:786:33) at async /vercel/path0/node_modules/next/dist/build/utils.js:1215:110 at async Span.traceAsyncFn (/vercel/path0/node_modules/next/dist/trace/trace.js:151:20) { code: 'P2010', clientVersion: '5.18.0', meta: { modelName: 'Product',
已排查所有配置项,谷歌未找到同类案例,已在Prisma官方仓库发起讨论。
可行解决方向
- 检查MongoDB Atlas IP白名单:确认部署平台(如Vercel)的出口IP已加入Atlas的IP访问列表,或临时开启「允许所有IP访问」验证是否为IP限制问题。
- 验证数据库连接字符串:确认
DATABASE_URL包含正确的用户名、密码、集群地址,且启用SSL(MongoDB Atlas默认强制要求),格式符合Prisma规范。 - 升级Prisma版本:部分旧版本存在MongoDB Atlas连接兼容性问题,尝试升级至最新稳定版。
- 调整连接超时配置:在
schema.prisma中延长连接超时时间,示例配置:datasource db { provider = "mongodb" url = env("DATABASE_URL") connectTimeoutMS = 30000 socketTimeoutMS = 60000 } - 排查部署环境网络:确认部署服务器能正常访问27017端口,无防火墙或代理拦截HTTPS请求。
内容的提问来源于stack exchange,提问作者Lucas Chini
相关产品推荐
相关产品推荐

