Prisma查询自关联关系计数报「表名重复指定」错误如何解决?
Prisma 2 自关联关系计数报错「表名User被多次指定」解决方案
问题原因
你使用的Prisma 2版本中,selectRelationCount预览特性对隐式自关联多对多关系的统计支持存在缺陷,生成SQL查询时没有给重复引用的User表分配不同的别名,最终触发表名重复指定的报错。
解决方案
有两种可选方案:
方案1:升级Prisma版本
Prisma 3.11.0及以上版本已经修复了该问题,无需修改现有模型和查询代码,升级版本后即可正常执行。
方案2:保留Prisma 2版本,将隐式多对多改为显式多对多
手动定义关联中间表,避免Prisma生成SQL时重复引用User表:
- 修改模型定义
model User { id String @id @default(cuid()) following Follows[] @relation("Follower") followers Follows[] @relation("Following") } // 新增显式多对多中间表 model Follows { followerId String followingId String follower User @relation("Follower", fields: [followerId], references: [id], onDelete: Cascade) following User @relation("Following", fields: [followingId], references: [id], onDelete: Cascade) @@id([followerId, followingId]) }
- 执行
prisma migrate dev生成迁移并同步到数据库 - 原有查询代码无需修改,直接运行即可正常获取粉丝和关注数。
内容的提问来源于stack exchange,提问作者G.G.
相关产品推荐
相关产品推荐

