mongodb
,当我想创建模型时,它向我抛出一个错误
Invalid `prisma.user.create()` invocation:
Prisma needs to perform transactions, which requires your MongoDB server to be run
as a replica set. https://pris.ly/d/mongodb-replica-set
我在 nextjs 应用程序中使用 Prisma,并将代码放在 API 页面中
我的 DATABASE_URL 是
mongodb://localhost:27017/threadzees
代码:
await prisma.user.create({
data: {
username,
email,
avatar: "1",
createdAt: new Date(),
},
});
如何解决这个问题?
我正在运行 Mongodb 4+ 版本我解决了它如下 正如错误所描述的,您需要创建一个副本。您可以使用基于云的 Mongo,也可以在本地创建一个副本,如下所示。
# Open new terminal execute below command
mongod --port=27001 --dbpath=. --replSet=rs0
# Open another terminal window execute below command
mongo.exe
# Then below command
rs.initiate( { _id : "rs0", members: [ { _id: 0, host: "localhost:27001" } ] })
# your new connection String
mongodb://localhost:27001
快乐编码:)
如果您使用本地 mongodb 服务,请找到 mongod.cfg 文件(通常位于
Program File\MongoDB\Server\[version number]\bin
中)并将其配置为使用副本集。添加以下行:
replication:
replSetName: rs0
然后从终端启动
mongosh
并使用 rs.initiate()
启动副本集服务器。您的代码现在应该可以正常工作了。
您可以使用 "prisma": "2.26.0" 和 "@prisma/client": "2.26.0" 代替当前版本。他们不需要副本集。 此外,对于这个旧版本,您还必须使用 @default(db generated()) 而不是 @default(auto()) ,两者都带有“npx [email protected]generate”。
只需将 localhost 替换为 127.0.0.1
mongodb://127.0.0.1:27017/threadzees