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

可选关联字段引发Prisma Studio查询异常问题求助

解决Prisma Studio创建Notification记录时的关联字段查询错误

问题描述

我在构建应用通知系统时,定义了如下Prisma的Notification模型,包含两个可选关联字段question_reference和answer_reference(二者必选其一):

model Notification {
  id                 Int       @id @default(autoincrement())
  for                User      @relation(fields: [userId], references: [id])
  read               Boolean   @default(false)
  question_reference Question? @relation(fields: [questionId], references: [id])
  answer_reference   Answer?   @relation(fields: [answerId], references: [id])

  userId     Int
  questionId Int?
  answerId   Int?
}

在Prisma Studio中尝试创建通知记录时触发错误,查看日志发现Studio生成了无效的findMany查询——本该放在include中的关联字段被错误放到了select里:

{
  "modelName": "Notification",
  "operation": "findMany",
  "args": {
    "take": 100,
    "skip": 0,
    "select": {
      "id": true,
      "for": true,
      "read": true,
      "question_reference": true,
      "answer_reference": true,
      "userId": true,
      "questionId": true,
      "answerId": true
    }
  }
}

已尝试升级Prisma到v4.10版本、执行prisma migrate dev(提示无schema变更或待处理迁移),但问题仍未解决。

复现步骤

  • 提前创建User和Question模型,在Prisma Studio中创建Notification模型
  • 点击“Add Record”,填入已创建的User和Question记录作为外键值
  • 触发上述错误

解决方案

  1. 重新生成Prisma客户端
    执行命令重新生成客户端,确保schema的关联定义被正确解析:
prisma generate
  1. 清理Prisma Studio缓存
    关闭Prisma Studio后,删除本地缓存目录,再重启Studio:
rm -rf .prisma/studio
prisma studio
  1. 通过脚本手动创建记录
    如果Studio的问题暂时无法解决,可直接用Prisma客户端脚本绕过:
const { PrismaClient } = require('@prisma/client')
const prisma = new PrismaClient()

async function createNotification() {
  const notification = await prisma.notification.create({
    data: {
      userId: 1, // 替换为实际用户ID
      questionId: 1, // 替换为实际问题ID
      read: false
    },
    include: {
      question_reference: true,
      for: true
    }
  })
  console.log(notification)
}

createNotification()
  .catch(e => console.error(e))
  .finally(async () => await prisma.$disconnect())
  1. 降级Prisma版本
    如果v4.10存在Studio的bug,可尝试降级到稳定版本(比如v4.9.0):
npm install prisma@4.9.0
prisma generate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:39:08