jav*_*ava 3 sql flyway spring-boot
如何管理处理相同数据库架构的多个项目。每个项目中的 Flyway 迁移脚本如果被其他项目修改,则不允许启动。
例如:
我有一个带有 FlywayInitializer 类的 Spring Boot Project X。
@PostConstruct
public void migrateFlyway() {
final Flyway flyway = new Flyway();
flyway.setSchemas("schema1");
flyway.setLocations("classpath:x.migration");
flyway.migrate();
}
Run Code Online (Sandbox Code Playgroud)
我有一个子模块 Project Y 和他自己的 FlywayInitializer 类
@PostConstruct
public void migrateFlyway() {
final Flyway flyway = new Flyway();
flyway.setSchemas("schema1");
flyway.setLocations("classpath:y.migration");
flyway.migrate();
}
Run Code Online (Sandbox Code Playgroud)
项目结构:
Project X
src
|
main
|
java
FlywayInitializerX.java
|
resources
V1.0_create_tableX.sql
V1.1_update_tableX.sql
Project Y
src
|
main
|
java
FlywayInitializerY.java
|
resources
V1.0_create_tableY.sql
V1.1_update_tableY.sql
Run Code Online (Sandbox Code Playgroud)
我如何为项目 X 和 Y 使用与 Flyway 相同的架构名称“schema1”?
编辑: 感谢@jesper_bk 帮助了我。这正是我想要的,这两个项目在同一架构中具有完全“独立的生活”。但现在我有以下问题:
第一个执行的项目 X 创建表正确,但如果项目 Y 启动,我会收到错误Found non-empty schema without metadata table。所以我必须将 BaselineOnMigrate 设置为 true。但是,如果我将 BaselineOnMigrate 设置为 true,则项目 Y 将跳过 sql 文件V1.0_create_tableY.sql并从V1.1_update_tableY.sql开始。我怎样才能达到,第一个 sql 脚本 V1.0_create_tableY.sql 也为项目 Y 执行?
@PostConstruct
public void migrateFlyway() {
final Flyway flyway = new Flyway();
flyway.setBaselineVersionAsString("1");
flyway.setBaselineOnMigrate(true);
flyway.setSchemas("schema1");
flyway.setLocations("classpath:y.migration");
flyway.migrate();
}
Run Code Online (Sandbox Code Playgroud)
如果您可以在同一架构中使用两个具有完全“独立生活”的项目,则可以为这两个项目使用单独的版本表,即:
@PostConstruct
public void migrateFlyway() {
final Flyway flyway = new Flyway();
flyway.setSchemas("schema1");
flyway.setLocations("classpath:x.migration");
flyway.setTable("schema_version_y");
flyway.migrate();
}
Run Code Online (Sandbox Code Playgroud)
如果您希望它们使用相同的版本控制方案,您可能最好将所有 SQL 脚本放在单独的第三个项目中,或者 - 甚至更复杂 - 拥有一个自动收集和枚举主项目中的 SQL 脚本的第三个项目。
关于你的第二个问题,baselineVersionAsString应该 < 1(例如 0)。如果基线版本为 1,它将确定您的第一个版本为 1.0 的脚本与基线匹配,并且应该已经被执行。
| 归档时间: |
|
| 查看次数: |
1944 次 |
| 最近记录: |