添加@unique的ID字段引发Prisma部署失败及查询字段重复错误
解决Prisma部署及Seed时的字段冲突问题
我来帮你梳理下这个问题的核心原因和解决步骤,你遇到的两个报错其实是关联的:
一、prisma deploy 500错误的根源
你在Species模型里给id字段手动添加了@unique约束,但Prisma的ID类型默认就自带@unique属性,手动添加属于冗余配置,触发了公共演示环境的内部校验逻辑报错。
修正方案:把datamodel.graphql里的两个模型的id字段调整为默认写法,去掉手动的@unique:
type Spot { id: ID! createdAt: DateTime! updatedAt: DateTime! lat: String! long: String! name: String! fishes: [Species!]! } type Species { id: ID! createdAt: DateTime! updatedAt: DateTime! name: String! spots: [Spot!]! }
二、prisma seed -r的Query字段重复错误
这个报错是因为模板自带的seed.graphql里已经定义了一个名为species的Query字段,而Prisma根据你的Species模型自动生成了同名的查询字段(用于单条记录查询),两者名称冲突导致校验失败。
解决步骤:
- 打开
seed.graphql,找到Query类型下的species字段,比如类似这样的代码:type Query { species: Species # 其他模板自带的字段... } - 要么删除这个自定义的
species字段(因为Prisma已经自动生成了标准的species(where: SpeciesWhereUniqueInput!): Species查询),要么把它重命名为不重复的名称(比如getSingleSpecies)。
三、完整的修复流程
按照以下顺序执行操作,确保彻底清除旧的缓存和冲突:
- 删除项目根目录下的
.prisma文件夹(这是Prisma的本地缓存目录) - 执行
prisma reset重置云端服务状态 - 执行
prisma deploy重新部署修正后的模型 - 最后执行
prisma seed -r完成数据填充
这样应该就能解决你遇到的两个问题了。
内容的提问来源于stack exchange,提问作者Seldon Stone
相关产品推荐
相关产品推荐

