mariadb Flyway是否会在现有数据库上从头执行所有迁移?

unftdfkk  于 2022-11-23  发布在  其他
关注(0)|答案(2)|浏览(124)

我有一个奇怪的问题要问。我开始做一个项目,我需要集成flyway,使它在应用程序启动时执行任何新的迁移。flyway依赖项和配置存在,指向一批迁移脚本,但这些都是以前在没有使用flyway的情况下“手动”对目标执行的。我不能告诉你为什么要这样组织。
我想做的是集成flyway,使其检查该迁移文件夹,并向管道中添加一个命令。我担心,如果我没有正确配置flyway,它会在启动时从头执行所有这些迁移吗?(这可能会损坏现有数据)还是只执行新添加的迁移?

mkshixfv

mkshixfv1#

您可以针对干净的测试数据库启动应用程序,Flyway将运行所有迁移并将记录保存到flyway_schema_history表中。然后,您可以在prod数据库上手动创建flyway_schema_history,并使用从测试表中获取的记录填充它。当您启动prod应用程序时,Flyway将扫描flyway_schema_history表,并认为所有迁移都已执行。并且不会运行您的脚本,因此数据不会损坏。

ufj5ltwl

ufj5ltwl2#

默认情况下,Flyway将尝试执行flyway_schema_history表中未记录为运行的所有迁移。
但是......有一个flyway baseline功能指示Flyway忽略版本等于或低于指定版本的任何迁移。
因此,假设为“已运行的迁移”提供了一个较早的版本号(已添加到文件名中),并且您确保将baselineVersion设置为高于这些已运行迁移的版本号,那么您应该可以开始了。

相关问题