如何实现 flyway-play Java 迁移

Posted

技术标签:

【中文标题】如何实现 flyway-play Java 迁移【英文标题】:How to Implement flyway-play Java Migration 【发布时间】: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 脚本的额外优势。 【参考方案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

【讨论】:

以上是关于如何实现 flyway-play Java 迁移的主要内容,如果未能解决你的问题,请参考以下文章

Java9 modules (Jigsaw)模块化迁移

idou老师教你学Istio06: 如何用istio实现流量迁移

如何正确地实现Java模块与inter-module Maven构建测试依赖关系

如何实现 IDbContextFactory 以用于实体框架数据迁移

如何计划从 WebSphere 迁移到更便宜的应用程序服务器,如 JBoss、Tomcat 或 Payara

将Applet应用程序迁移到Java 11