【问题标题】:How to Implement flyway-play Java Migration如何实现 flyway-play Java 迁移
【发布时间】:2016-09-24 09:59:58
【问题描述】:

flyway-play(3.0.0)可以使用Java迁移脚本吗?

SQL 迁移工作正常,但是当我将示例 Java 迁移脚本放入 app\db\migration\V1_0_1__PopulateDatabase.java 或放入与 SQL 脚本相同的目录时,它不会被识别为有效的迁移脚本。

以前有人试过吗?

【问题讨论】:

  • 你设法让它工作了吗?我也有同样的需求
  • 最后我停止使用 flyway-play 并在一个单独的子项目中重新使用 flyway-core。尽管它支持 Java 和 Scala 迁移脚本,但这并不是我放弃 flyway-play 的主要原因。使用flyway-play,项目需要编译并处于早期开发阶段,以及从数据库生成模式,它变得太混乱了。拥有一个单独的项目使事情变得更加灵活,并具有支持 Java/Scala 脚本的额外优势。

标签: java database migration flyway


【解决方案1】:

根据flyway-play README,Flyway 迁移(脚本或 Java 迁移)需要放置在 db/migration/${dbName} 的类路径中。

例如,假设我在application.conf 中指定了一个名为default 的数据库连接,如下所示:

db.default {
  driver=org.postgresql.Driver
  url="jdbc:postgresql://localhost/database"
}

在这种情况下,我需要将 sql 迁移放在 conf/db/migration/default 并将 Java 迁移放在 app/db/migration/default

在您的情况下,您没有在 Java 迁移的路径中包含数据库名称。虽然您已将迁移放在app/db/migration/V1_0_1__PopulateDatabase.java,但它可能应该在app/db/migration/default/V1_0_1__PopulateDatabase.java 之类的地方。

【讨论】:

    【解决方案2】:

    您还可以在 Scala 中编写您的迁移,flyway-play 会选择它们(它会扫描 Scala 和 Java 迁移)。 flyway-play repo 有一个示例 Play 应用程序可以执行此操作:https://github.com/flyway/flyway-play/tree/master/playapp/app/db/migration/java

    【讨论】:

      猜你喜欢
      • 2016-12-12
      • 2020-08-21
      • 2017-12-23
      • 2016-09-24
      • 2016-02-05
      • 2023-03-13
      • 2015-01-02
      • 2019-12-27
      • 2013-03-03
      相关资源
      最近更新 更多