Prisma创建School关联SubjectPool时school_id参数报错求助
问题:Prisma创建关联数据时出现school_id参数错误
定义的Prisma模型
model School { id Int @id @default(autoincrement()) name String? center_no Int? type String? subjects SubjectPool[] }
model SubjectPool { id Int @id @default(autoincrement()) name String? code String? school School? @relation(fields: [school_id], references: [id]) school_id Int? }
初始化数据库的Seed代码
await prisma.school.create({ data: { ...school, subjects: { create: [ math, english, geography] } }, include: { subjects: true } })
报错信息
await prisma.school.create({ data: { id: 1, name: 'kansenshi secondary school', center_no: 2783783, type: 'gov', province: 'copperbelt', district: 'Ndola', subjects: { create: [ null, { id: 3, name: 'English', code: '234', school_id: null, ~~~~~~~~~ class_id: null }, null ] } }, include: { subjects: true } }) Unknown arg `school_id` in data.subjects.create.1.school_id for type SubjectPoolUncheckedCreateWithoutSchoolInput. Did you mean `class_id`? Available args: type SubjectPoolUncheckedCreateWithoutSchoolInput { id?: Int name?: String | Null code?: String | Null class_id?: Int | Null schedule?: ClassScheduleUncheckedCreateNestedManyWithoutSubjectInput }
解决方案
移除SubjectPool数据中的school_id字段
在通过School.subjects.create创建关联的SubjectPool时,Prisma会自动处理外键关联,无需手动传入school_id。当前报错是因为该场景下Prisma使用的输入类型不允许指定关联外键字段。清理旧模型残留并更新Prisma客户端
错误信息中出现了未在当前模型定义的class_id和ClassSchedule字段,说明Prisma客户端可能未同步最新模型。执行以下命令:- 重新生成客户端:
npx prisma generate - 同步数据库结构:
npx prisma db push(开发环境)或npx prisma migrate dev - 重新执行seed:
npx prisma db seed
- 重新生成客户端:
过滤seed数据中的null值
报错的seed数据中存在null元素,会触发无效的创建操作,建议过滤掉空值:await prisma.school.create({ data: { ...school, subjects: { create: [math, english, geography].filter(Boolean) } }, include: { subjects: true } })
内容的提问来源于stack exchange,提问作者Bright
相关产品推荐
相关产品推荐

