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

运行prisma migrate dev触发seed时报SQLite连接错误,单独运行seed正常

问题根因

该报错是Prisma 3.x版本的已知问题:执行prisma migrate dev时自动触发的seed任务,会复用迁移流程的数据库事务连接,当前seed逻辑采用循环逐条插入数据的方式,查询次数多、执行时间长,超过了SQLite默认的查询超时阈值,就会触发连接超时报错。
单独执行npx prisma db seed时,seed任务会创建独立的数据库连接池,不受迁移事务的超时限制,因此可以正常执行完成。

解决方案

可任选以下一种方案解决问题:

  • 优化seed插入逻辑(推荐)
    把循环逐条create替换为批量插入createMany,大幅减少查询次数、缩短执行时间,修改后的seed.js核心逻辑如下:
    async function main() {
      console.log(`Start seeding ...`);
      await prisma.note.createMany({ data: notesData });
      await prisma.noteAttributes.createMany({ data: noteAttributesData });
      await prisma.noteChangeLog.createMany({ data: noteChangeLogsData });
      await prisma.tag.createMany({ data: tagsData });
      await prisma.noteOnTag.createMany({ data: noteOnTagsData });
      console.log(`Seeding finished.`);
    }
    
  • 延长查询超时时间
    实例化PrismaClient时手动配置更长的查询超时阈值,适配大数据量的插入场景:
    const prisma = new PrismaClient({
      queryTimeout: 15000 // 单位为毫秒,可根据数据量大小调整
    });
    
  • 拆分迁移和seed执行步骤
    执行迁移时跳过自动seed,迁移完成后手动执行seed命令:
    # 执行迁移,跳过自动seed
    prisma migrate dev --name init --skip-seed
    # 手动执行seed
    npx prisma db seed
    
  • 升级Prisma版本
    当前使用的3.4.2属于较老的版本,Prisma 4.x及以上版本已经优化了迁移阶段seed的连接管理逻辑,升级到最新稳定版也可以修复该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:24:08