我有2个文件:db结构和db数据sql文件。 (我们还没有参与创建alter文件的项目。)
有没有办法在每次构建之前运行这些文件,如果它们中的任何一个使用maven进行了更改?
我唯一的想法是在每次更改后重命名文件(将版本提升),确保flyaway将其取出。
是否有更智能的方式,可能使用API或其他“技巧”?
由于
- MB
答案 0 :(得分:6)
您可以使用以下配置进行flyway迁移
validationMode=ALL
validationErrorMode=CLEAN
对于每个sql迁移,在执行sql脚本时计算CRC32校验和。验证机制检查类路径中的sql迁移是否仍然与已在数据库中执行的sql迁移具有相同的校验和。
validationErrorMode = CLEAN专门用于开发的便利。即使很难,我们也强烈建议您在检查SCM并运行后不要更改迁移脚本,这提供了一种以平滑方式处理此案例的方法。数据库将自动擦除,确保下一次迁移将使您返回检入SCM的状态。
此配置可以在API,maven plugin或command line中使用。
答案 1 :(得分:0)
使用较新的Flyway,您可以使用
flyway.setInitOnMigrate(true);
flyway.setCleanOnValidationError(true);
flyway.setValidateOnMigrate(true);
如果文件的校验和发生变化或缺少版本表,则删除所有内容。