Prisma无法连接MongoDB:DNS解析错误及配置问题求解决方案
解决Prisma连接MongoDB时的DNS解析错误(os error 10051)
问题概述
执行npx prisma db push时触发DNS解析错误,具体报错:
Error: MongoDB error Kind: An error occurred during DNS resolution: proto error: io error: 通訊端操作嘗試連線到一個無法連線的網路。(os error 10051), labels: {}
相关配置与执行详情
schema.prisma
generator client { provider = "prisma-client-js" } datasource db { provider = "mongodb" url = env("DATABASE_URL") } model employees { Employee_id String @id @default(auto()) @map("_id") @db.ObjectId Firstname String Surname String Email String Hired_on DateTime @default(now()) }
.env
DATABASE_URL="mongodb+srv://<username:<password>@cluster0.ds3t9sn.mongodb.net/post?retryWrites=true&w=majority"
命令执行日志
D:\Prisma\post>npx prisma db push Environment variables loaded from .env Prisma schema loaded from prisma\schema.prisma Datasource "db": MongoDB database "test" at "cluster0.jnuulkq.mongodb.net" Error: MongoDB error Kind: An error occurred during DNS resolution: proto error: io error: 通訊端操作嘗試連線到一個無法連線的網路。(os error 10051), labels: {} 0: schema_core::commands::schema_push::Calculate `from` at schema-engine\core\src\commands\schema_push.rs:29 1: schema_core::state::SchemaPush at schema-engine\core\src\state.rs:436
解决方案
1. 修正MongoDB连接字符串
- 修复用户名密码格式:你的连接字符串中
<username:<password>格式错误,正确格式为<username>:<password>,请替换为实际的用户名和密码,并移除所有<>占位符。 - 对齐集群地址:命令输出显示集群地址为
cluster0.jnuulkq.mongodb.net,但.env中写的是cluster0.ds3t9sn.mongodb.net,二者不匹配。直接从MongoDB Atlas控制台复制完整的连接字符串即可避免该问题。
2. 检查MongoDB Atlas IP白名单
登录MongoDB Atlas控制台,确认当前机器的IP已加入集群的IP白名单;测试阶段可临时设置为0.0.0.0/0(允许所有IP访问,生产环境禁用此配置)。
3. 排查本地网络限制
os error 10051是Windows系统下的网络连接错误,可尝试以下操作:
- 关闭本地防火墙,或给Node.js/Prisma添加网络访问权限;
- 若使用代理,检查代理配置是否正确,或临时关闭代理;
- 切换网络(如从内网切换到手机热点)测试连接是否正常。
4. 重置Prisma缓存
执行以下命令清理缓存并重新生成客户端:
npx prisma generate rm -rf node_modules/.prisma npm install
5. 重新执行推送命令
修正所有问题后,再次运行:
npx prisma db push
内容的提问来源于stack exchange,提问作者Dom
相关产品推荐
相关产品推荐

