如何实现 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 迁移的主要内容,如果未能解决你的问题,请参考以下文章
idou老师教你学Istio06: 如何用istio实现流量迁移
如何正确地实现Java模块与inter-module Maven构建测试依赖关系
如何实现 IDbContextFactory 以用于实体框架数据迁移