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

Prisma Schema定义id为Int类型运行prisma studio报UUID转Int错误

问题根因

报错本质是Prisma Schema定义与数据库实际表结构类型不匹配:你定义users表主键id为Int类型,但数据库中该字段实际存储的是UUID格式值,Prisma查询引擎拉取数据时尝试将UUID强制转换为Int失败,直接触发引擎panic崩溃。
你使用的Prisma Client 2.30.3是2021年发布的老旧版本,该版本对类型不匹配场景容错性极差,遇到这类问题不会返回友好的类型校验错误,会直接崩溃。

排查解决步骤
  • 核对数据库实际表结构
    直连你使用的PostgreSQL数据库,通过命令行或可视化工具查看users表id字段的实际类型,确认是否为uuid类型。
    这类问题最常见的两个触发场景:一是之前建表时给id设置了UUID默认值,后续修改Schema后没有执行同步迁移;二是项目配置的数据库连接地址有误,连到了其他表结构不匹配的数据库实例。
  • 对齐Schema与数据库结构
    • 如果业务设计里id就是UUID格式:直接修改Prisma Schema中id字段的定义,和数据库结构匹配:
      model users {
        id            String    @id @default(uuid())
        email         String    @unique
        firstName     String?
        lastName      String?
        password      String?
      }
      
    • 如果业务设计里id应为自增整数:需要先修改数据库表结构,将id字段调整为int类型、绑定自增序列,同时把表中已存的UUID格式id数据替换为整数值,保证字段存储内容和Int类型匹配。
  • 同步Prisma状态
    结构对齐后执行以下命令,重新生成Prisma Client、同步表结构状态,避免旧缓存干扰:
    npx prisma generate
    # 如果你用Prisma Migrate管理表结构,执行迁移命令
    npx prisma migrate dev --name fix_user_id_type
    
  • 升级Prisma版本(强烈建议)
    2.30.3版本迭代过早,后续版本已经修复了大量类型不匹配直接触发panic的问题,建议升级到4.x及以上稳定版本,遇到同类配置错误会返回明确的提示信息,不会直接导致查询引擎崩溃。
验证

操作完成后重新启动Prisma Studio、调用getUsers接口,prisma.users.findMany()可以正常返回数据即修复完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:18:33