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

Prisma调用视图报错:public.BalanceTransactionView不存在

解决Prisma视图查询报错:The table public.BalanceTransactionView does not exist

核心原因

问题本质是Prisma默认会把未标记为view的模型当成普通表查找,而你的数据库中只有视图没有对应表;另外Prisma不会自动创建/管理视图,必须手动确保数据库中视图存在,且Schema定义正确关联到视图。

解决步骤

  1. 修正Prisma Schema中的视图定义
    必须为视图模型添加@@view指令,明确告诉Prisma这是一个视图而非普通表。示例:

    model BalanceTransactionView {
      // 字段需和数据库视图的字段完全匹配(名称、类型)
      id              Int      @id
      userId          String
      amount          Decimal
      transactionDate DateTime
    
      // 指定视图的实际名称和所属schema
      @@view(name: "BalanceTransactionView", schema: "public")
    }
    

    注意:如果数据库中视图是蛇形命名(比如balance_transaction_view),要在@@view的name参数里写实际的数据库视图名,Prisma不会自动转换模型名的大小写/命名风格。

  2. 重新生成Prisma客户端
    执行以下命令让新的视图定义生效:

    prisma generate
    
  3. 确认数据库中视图存在且匹配
    即使$queryRaw能查到数据,也要检查:

    • 视图的实际名称是否和@@view中指定的完全一致(PostgreSQL中带引号创建的视图名大小写敏感)
    • 视图所属的schema是否为public(若不是,需修改@@view里的schema参数)
    • 若数据库中还没有该视图,需手动执行SQL创建(Prisma的migrate/db push都不会自动创建视图)
  4. 排查缓存问题
    若以上步骤完成后仍报错,可删除node_modules/.prisma/client目录清除缓存,再重新执行prisma generate。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:17:09