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

使用Evolve执行数据库迁移时遇校验和无效错误求解决

解决Evolve迁移时的"invalid checksum for migration"错误

问题根源

这个错误的核心原因是:你的本地文件V120__Insert_into_sa_report_proforma_detail.sql内容被修改过,但数据库的evolve_changelog表中已经存储了该脚本第一次执行时生成的校验值,两者校验结果不匹配。Evolve的校验机制是为了防止已执行的迁移脚本被随意修改,避免造成数据不一致或变更追溯混乱。

解决方法

根据你的实际需求选择对应的方案:

1. 确认需要修改已执行的脚本(比如修复脚本错误)

  • 先核对数据库当前的数据状态,确保修改脚本不会引发数据冲突
  • 生成当前脚本的新校验值:执行Evolve的calculate-checksum命令
    evolve calculate-checksum "C:\\Users\\HP\\Desktop\\MywamProject\\mywam.saas.backend.api\\docker-database\\evolve\\catalogdb\\V120__Insert_into_sa_report_proforma_detail.sql"
    
  • 手动更新数据库的evolve_changelog表,替换对应记录的校验值:
    UPDATE evolve_changelog 
    SET checksum = '上面命令生成的新校验值' 
    WHERE filename = 'V120__Insert_into_sa_report_proforma_detail.sql';
    
  • 重新执行你的迁移命令即可

2. 误修改脚本,想恢复到原版本

  • 从版本控制系统(比如Git)的历史记录中找回V120__Insert_into_sa_report_proforma_detail.sql的原始版本,覆盖本地修改后的文件
  • 再次执行迁移命令,校验会自动通过

3. 临时跳过校验(仅测试环境可用,生产环境严禁使用)

  • 在迁移命令末尾添加--skip-validation参数,强制跳过校验步骤:
    evolve migrate mysql -c "User Id=root;password=root;Host=localhost;Port=3306;Database=saas_catalogdb;" -l "C:\\Users\\HP\\Desktop\\MywamProject\\mywam.saas.backend.api\\docker-database\\evolve\\catalogdb" --skip-validation
    
  • 注意:这个操作会绕过Evolve的一致性校验,可能导致数据库变更记录和实际脚本不一致,生产环境绝对不能使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:09:21