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

使用Prisma 3.14修改Schema字段类型后触发P2032错误求助

解决Prisma 3.14中字段类型从int改string后的P2032错误

问题背景

将Schema中campaign_id属性从int修改为string后,执行prisma.models.findMany()时触发以下错误:

PrismaClientKnownRequestError:
Invalid `prisma.models.findMany()` invocation in

export const getAllModels = async () => {const resUnparsed = await prisma.models.findMany(

Error converting field "campaign_id" of expected non-nullable type "String", found incompatible value of "9156".
{
  code: 'P2032',
  clientVersion: '3.14.0',
  meta: { field: 'campaign_id', expected_type: 'String', found: '9156' }
}

错误原因

仅修改Prisma Schema的字段类型不完整:

  • 数据库中campaign_id字段的实际类型仍为int,未同步更新为字符串类型
  • 现有数据存储的是数字值(如9156),而Prisma客户端已按照Schema期望读取字符串类型,导致类型转换冲突

解决步骤

  • 同步数据库字段类型
    使用Prisma Migrate生成迁移文件并执行,将数据库字段类型更新为字符串:

    npx prisma migrate dev --name change_campaign_id_to_string
    

    也可手动在数据库中修改字段类型(例如MySQL用ALTER TABLE models MODIFY COLUMN campaign_id VARCHAR(255) NOT NULL;,PostgreSQL用ALTER TABLE models ALTER COLUMN campaign_id TYPE TEXT;)。

  • 转换现有数据为字符串类型
    执行SQL语句将数据库中已有的数字值转换为字符串:

    -- 适配多数数据库的通用示例,可根据数据库类型调整语法
    UPDATE models SET campaign_id = CAST(campaign_id AS VARCHAR);
    
  • 重新生成Prisma客户端
    确保客户端代码与最新Schema一致:

    npx prisma generate
    
  • 验证查询
    再次执行getAllModels函数,确认错误已解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:53:01