【发布时间】:2011-10-02 18:23:00
【问题描述】:
我有 2 个文件:db 结构和 db 数据 sql 文件。 (我们尚未参与创建变更文件的项目)。
如果使用 maven 更改了这些文件,是否有办法在每次构建之前运行这些文件?
我唯一的想法是在每次更改文件后重命名文件(提高版本),以确保 flyaway 将其拾取。
有没有更聪明的方法,也许是使用 API 或其他一些“技巧”?
谢谢
--MB
【问题讨论】:
我有 2 个文件:db 结构和 db 数据 sql 文件。 (我们尚未参与创建变更文件的项目)。
如果使用 maven 更改了这些文件,是否有办法在每次构建之前运行这些文件?
我唯一的想法是在每次更改文件后重命名文件(提高版本),以确保 flyaway 将其拾取。
有没有更聪明的方法,也许是使用 API 或其他一些“技巧”?
谢谢
--MB
【问题讨论】:
您可以通过以下配置使用flyway migrate
validationMode=ALL
validationErrorMode=CLEAN
对于每个 sql 迁移,在执行 sql 脚本时都会计算一个 CRC32 校验和。验证机制检查类路径中的 sql 迁移是否仍然与数据库中已执行的 sql 迁移具有相同的校验和。
validationErrorMode=CLEAN 专门用于方便开发。即使很难,我们也强烈建议在将迁移脚本签入 SCM 并运行后不要更改它们,这提供了一种以平稳方式处理这种情况的方法。数据库将被自动擦除干净,确保下一次迁移将使您回到签入 SCM 的状态。
此配置可通过 API、maven plugin 或 command line 使用。
【讨论】:
使用较新的 Flyway,您可以使用
flyway.setInitOnMigrate(true);
flyway.setCleanOnValidationError(true);
flyway.setValidateOnMigrate(true);
如果文件的校验和更改或版本表丢失,则删除所有内容。
【讨论】: