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

如何在CI测试流水线中复现Prisma迁移失败场景?

可行的Prisma迁移失败复现方案(适配CI场景)

以下几种方法无需修改Prisma自动生成的无错误迁移文件,可在CI环境中简单复现迁移失败:

  • 强制终止迁移进程
    在CI脚本中给迁移命令添加超时限制,让进程在执行中途被强制终止,模拟迁移崩溃场景。例如:

    # Linux/macOS
    timeout 3s npx prisma migrate deploy
    # Windows(PowerShell)
    Start-Process -NoNewWindow -Wait -Timeout 3000 npx -ArgumentList "prisma migrate deploy"
    

    调整超时时间,确保迁移未完成就被终止,触发失败状态。

  • 限制数据库资源配额
    如果CI中使用Docker部署测试数据库,启动容器时设置极低的资源限制,让迁移因资源不足失败。例如启动PostgreSQL容器:

    docker run -d --name test-db -p 5432:5432 -e POSTGRES_PASSWORD=postgres --memory=64m --cpus=0.1 postgres:latest
    

    当迁移执行表结构变更、数据迁移等操作时,会因内存/CPU不足触发失败。

  • 临时中断数据库连接
    在CI脚本中先启动迁移命令,随后立即断开数据库连接(几秒后可恢复,不影响后续测试)。例如用Docker操作:

    # 后台启动迁移
    npx prisma migrate deploy &
    # 延迟1秒后停止数据库容器
    sleep 1 && docker stop test-db
    # 等待迁移进程退出(此时已失败)
    wait $!
    

    这种方式模拟了迁移过程中数据库宕机的场景,迁移文件本身无错误,符合测试需求。

  • 利用Prisma迁移钩子注入失败逻辑
    临时修改schema.prisma的迁移钩子,在迁移流程中插入失败命令。例如:

    generator client {
      provider = "prisma-client-js"
    }
    
    datasource db {
      provider = "postgresql"
      url      = env("DATABASE_URL")
      migrations {
        hooks = [
          "beforeMigrate": "exit 1"
        ]
      }
    }
    

    在CI测试时动态替换schema.prisma的这段配置,执行迁移时会在前置钩子触发失败,测试完成后恢复原配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:45:27