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

NestJs+Prisma执行npx prisma db push时MongoDB认证失败

NestJs+Prisma执行npx prisma db push遭遇MongoDB认证错误

错误详情

Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": MongoDB database "test" at "localhost:27017"
Error: MongoDB error
SCRAM failure: Authentication failed.
   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:432

当前Prisma配置

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

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

model User {
  id                  String       @id @default(uuid()) @map("_id")
  createdAt           DateTime     @default(now())
  updatedAt           DateTime     @updatedAt
  emailId             String
  @@index([emailID])
}

.env数据库连接字符串

// DB Name is test
DATABASE_URL="mongodb://user:password@localhost:27017/test?authMechanism=SCRAM-SHA-1"

使用的Prisma版本

"@prisma/client": "^5.0.0",
"prisma": "^5.0.0",

解决步骤

  • 验证账号密码与权限
    使用MongoDB Shell直接测试连接:

    mongosh "mongodb://user:password@localhost:27017/test?authMechanism=SCRAM-SHA-1"
    

    确认账号能正常登录,且拥有test数据库的读写权限。

  • 检查连接字符串格式

    • 若密码包含@、:、/等特殊字符,需进行URL编码(比如@编码为%40)
    • 部分环境下.env文件中的连接字符串无需包裹双引号,可尝试去掉引号后重试:
      DATABASE_URL=mongodb://user:password@localhost:27017/test?authMechanism=SCRAM-SHA-1
      
  • 调整认证机制
    尝试将连接字符串中的authMechanism改为SCRAM-SHA-256,Prisma 5.x对该认证机制的兼容性更好:

    DATABASE_URL="mongodb://user:password@localhost:27017/test?authMechanism=SCRAM-SHA-256"
    
  • 升级Prisma版本
    Prisma 5.0.0存在部分MongoDB相关的已知问题,升级到最新稳定版可修复部分兼容性问题:

    npm install prisma@latest @prisma/client@latest
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:53:26