当前位置: 首页 > 知识库问答 >
问题:

采用单一模式和多个项目的Flyway迁移

金赤岩
2023-03-14

我有一个关于Flyway DB迁移的问题。如何管理处理同一数据库模式的多个项目(微服务)。如果每个项目中的Flyway移植脚本被其他项目修改,则不允许启动该脚本。他们是否有相关的文档或最佳实践?

共有3个答案

白烨煜
2023-03-14

我也遇到过同样的问题,因为我正在处理2-3个微服务,所以我所做的如下示例,按以下顺序运行

micro-service-1 ( which required migration )
micro-service-2
micro-service-3 ( which required migration )

所以我创建了flyway迁移v1_description。我在micro-service-1中创建了sql,然后在micro-service-3中创建了v1_2__description。sql因为它在运行的项目序列中排名第三,所以这是我的版本1,它有2个迁移版本1和1.2

micro-service-1 ( V1_description.sql )
micro-service-2 // if in future it reuires migration then we can use, V<<currentVersion>>_1__description.sql
micro-service-3 ( V1_2_description.sql )
罗茂实
2023-03-14

不管怎样,这就是我们所做的。由于该模式由多个项目共享,因此我们将该模式由一个项目管理,该项目的任务是维护该模式。集中模式创建和维护还有其他好处,因为我们有单一的变更点。我们不需要扫描几个项目的变化。

老实说,我认为这是最好的解决方案。我不相信flyway有项目间模式依赖关系管理。

全飞扬
2023-03-14

我们正在这样做。我们有一个管理模式创建/管理的中心项目,其他项目通过它们自己的flyway版本控制来处理它们自己的函数创建。这是通过更改其他项目用来检查其模式版本的表的名称,并将迁移时的基线设置为< code>true来实现的。我们使用的是spring/flyway-db配置,所以除了第一个项目之外,只需将以下内容添加到每个项目的< code > application . properties 中。

flyway.baselineOnMigrate=true
flyway.table=schema_version_*<some_other_identifier>*

我知道您的问题没有明确指定Spring配置,但我相信这可以配置,无论您如何使用飞行方式。我想发布一个答案,因为当我自己在谷歌上搜索这个问题时,你的SO问题是最好的结果,我认为我的答案可能会帮助某人走上正轨。

 类似资料:
  • 如何管理处理相同数据库模式的多个项目。如果被另一个项目修改,每个项目中的Flyway迁移脚本不允许启动。 例如: 我有一个带有FlywayInitializer类的spring boot项目X。 我有一个子模块Y,还有他自己的FlywayInitializer类 项目结构: 如何对项目X和Y使用与Flyway相同的schemaname“schema1”? 编辑:谢谢@jesper\u bk对我的帮

  • 问题内容: 如何管理处理同一数据库模式的多个项目。如果每个项目中的Flyway迁移脚本被另一个项目修改,则不允许启动。 例如: 我有一个带有FlywayInitializer类的Spring Boot ProjectX。 我有一个子模块Project Y,也有他自己的FlywayInitializer类 项目结构: 如何在Flyway中为Project X和Y使用相同的架构名称“ schema1”

  • 我对Flyway完全陌生,但我正在尝试使用https://github.com/flyway/flyway-docker描述的docker-compose flyway mysql安排来迁移许多相同的测试数据库 据我所知,< code>migrate命令可以在它的< code>-schemas参数中接受多个模式,但是它似乎只将实际的SQL迁移应用于列表中的第一个模式。 例如,当我使用< code>

  • 我想使用 Flyway 获取特定数据库的最新架构版本值。Flyway 中是否有函数可以在命令行中获取当前架构版本号? 我可以运行以下命令: 这为我提供了数据库的整个架构内容(缩短),如下所示: 我只对最后一个架构条目版本“1.5.9”值感兴趣。 我的环境如下: < li>Windows 7 < li>Flyway 3.0

  • Flyway FAQ将多个模式分为三种情况: 多个相同的模式 模式是不同的,但有相同的生命周期 模式有一个独特的生命周期,或者必须是独立的和干净的分离 我们正在使用Maven构建一个多模块SpringBoot4.5.9项目。每个模块都是完全独立的,并且有自己的数据库模式。所有模式都驻留在一个数据库中,因此只有一个Spring数据源。 由于模块是独立的,我们希望分别管理它们各自的模式迁移,因此上面的

  • 我正在试用flyway,对类路径和JAR有一个理解问题。 我有一个在多个maven模块中包含多个服务的项目。我希望每个服务都使用flyway维护其模式。因此,每个服务都是一个maven模块,具有自己的资源目录,我可以在其中放置SQL脚本,这将是JAR的一部分。现在,服务可以在嵌入式模式下运行,在嵌入式模式下,终端用户应用程序(例如tomcat)中存在多个服务JAR。 在服务初始化时,我会使用每个服