8

我即将开始一个将使用 Play 的新项目!Scala 2 框架,可能使用 Squeryl 作为 ORM(但如果及时准备好,Slick 也可以)。

现在,玩!具有使用迁移升级数据库的功能。不幸的是,这些迁移是用 SQL 编写的。这不仅带来不便(我希望能够在 Scala 中编写迁移),而且有两个问题

  • 首先,我需要自己编写迁移。我习惯了South,它能够通过查看我的模型的当前和以前的定义来推断模式迁移;
  • 其次,处理数据迁移会非常麻烦。可能需要以编程方式更改数据,而这在纯 SQL 中甚至是不可行的。

所以,我正在寻找替代方案。我无法为任何可以自动生成模式迁移的 Scala ORM 找到任何迁移工具,有吗?

我能找到的最好的工具是Scala 迁移。有没有办法让Play!自动使用它来代替自己的迁移工具?

4

3 回答 3

6

另一种选择是Flyway,但它不会解决您的集成问题。

为此,您可以像使用标准 Play 一样实现插件!进化,您可以使用Global 对象在应用程序启动时开始迁移。

于 2012-08-17T13:51:17.703 回答
5

Play2 中的 Evolutions 是作为插件实现的。您可以检查它的实现并按照相同的方式推出您自己的实现。据我所知,没有一种简单的方法可以将实现换成另一个。

另一个可能值得一看的工具是Liquibase。它是用 Java 实现的,所以应该很容易从 Scala 中使用。

于 2012-08-17T10:11:49.870 回答
5

我推荐liquibase。Liquibase 是一个开源的、独立于数据库的库,用于跟踪、管理和应用数据库更改。它建立在一个简单的前提之上:所有数据库更改都以人类可读但可跟踪的形式存储并签入源代码控制。Liquibase 可用于 Java 和 Scala。Liquibase 的优点在于您可以使用 XML、SQL 或两者的组合来满足您的数据库迁移需求。它易于设置和使用,并且具有非常广泛的文档。

于 2012-08-17T13:45:57.550 回答