玩迁移替代品

And*_*rea 8 migration scala playframework squeryl

我即将开始一个将使用Play的新项目!2 Scala的框架,可能使用Squeryl作为ORM(但也许Slick也会没问题,如果及时准备的话).

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

  • 首先,我需要自己编写迁移.我已经习惯了South,它能够通过查看模型的当前和以前的定义来推断模式迁移;
  • 第二,处理数据迁移将非常麻烦.可能需要以编程方式更改数据,这在普通SQL中甚至可能无法实现.

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

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

nde*_*rge 6

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

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


Bri*_*ith 5

Play2中的演变实现为插件.你可以检查它的实现,并沿着相同的路线滚动自己.据我所知,没有一种简单的方法可以将实现替换为另一种实现.

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


小智 5

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