【问题标题】:Execute just one SQL file via Flyway通过 Flyway 只执行一个 SQL 文件
【发布时间】:2018-09-28 19:18:53
【问题描述】:

我的“resources/sql/create”文件夹中有多个 SQL 文件。我只想通过 Flyway 运行一个 SQL 文件。但以下不起作用:

final Flyway flyway = new Flyway();
flyway.setDataSource(jdbcUrl, "", "");
flyway.setLocations("classpath:sql/create/create_table_person.sql");
flyway.clean();
flyway.migrate();

如何只执行一个 SQL 文件?我无法删除其他文件,因为它们位于 test-jar 文件中。

【问题讨论】:

  • 我不认为你可以通过 locations 做到这一点,因为 Flyway 将位置扫描为迁移脚本的入口目录。也许您可以使用sqlMigrationPrefix 属性通过文件名区分测试和生产脚本。
  • 谢谢@TomasTulka!就我而言,我使用了sqlMigrationSuffix,它可以工作。
  • 您尝试排除其他文件的原因是什么?
  • @DavidAtkinson 因为我正在使用一个测试罐,其中包含通常用于创建所有表的所有 SQL 脚本。但在我的测试用例中,我只需要一张表。
  • 如果其他对象已经在目标中并且被 Rlyway 放在那里,那么脚本将不会被 Flyway 运行。

标签: java flyway


【解决方案1】:

您可以使用 target 参数显式请求迁移到某个版本。例如,使用 CLI:

flyway migrate -target=1.2.3

使用Java lib应该是:

flyway.setTargetAsString("1.2.3");

【讨论】:

  • 不幸的是,我的几个 SQL 脚本的版本 1.0.0.4 与我的脚本 V__1_0_0004__create_table_person.sql 相同,我无法重命名它们。
猜你喜欢
  • 1970-01-01
  • 2021-01-21
  • 2010-11-30
  • 2016-12-12
  • 1970-01-01
  • 2018-12-19
  • 2016-10-24
  • 2016-12-24
  • 2017-12-10
相关资源
最近更新 更多