0

我有 2 个文件:db 结构和 db 数据 sql 文件。(我们尚未参与创建变更文件的项目)。

如果它们中的任何一个使用 maven 进行了更改,有没有办法在每次构建之前运行这些文件?

我唯一的想法是在每次更改文件后重命名文件(提升版本),以确保 flyaway 将其拾取。

有没有更聪明的方法,也许是使用 API 或其他一些“技巧”?

谢谢

--MB

4

2 回答 2

7

您可以通过以下配置使用 flyway migrate

validationMode=ALL
validationErrorMode=CLEAN

对于每个 sql 迁移,在执行 sql 脚本时都会计算一个 CRC32 校验和。验证机制检查类路径中的 sql 迁移是否仍然具有与数据库中已执行的 sql 迁移相同的校验和。

validationErrorMode=CLEAN 专门用于方便开发。即使很难,我们也强烈建议不要更改迁移脚本,一旦它们被检入 SCM 并运行,这提供了一种以平稳方式处理这种情况的方法。数据库将自动擦除干净,确保下一次迁移将使您回到签入 SCM 的状态。

可以从 API、maven 插件命令行使用此配置。

于 2011-07-15T13:13:53.707 回答
0

使用较新的 Flyway,您将使用

flyway.setInitOnMigrate(true);
flyway.setCleanOnValidationError(true);
flyway.setValidateOnMigrate(true);

如果文件的校验和更改或版本表丢失,则删除所有内容。

于 2014-04-25T15:47:59.540 回答