在多个数据库上排序 Play Evolution

Posted

技术标签:

【中文标题】在多个数据库上排序 Play Evolution【英文标题】:Ordering Play Evolutions on Multiple Databases 【发布时间】:2014-02-11 00:51:45 【问题描述】:

我有一个环境,我使用多个数据库(A 和 B),每个数据库都有不同的演变集,到目前为止完全成功。但是,总是先应用一组数据库演化,B 数据库的所有演化都在 A 数据库的任何演化之前应用。

我们正在进行一些重大的重组,这导致了一些跨数据库查询以将数据库 B 移动到未来,但是由于数据库 B 的演变首先运行,因此对数据库 A 的更改尚未发生,并且进化失败。

有没有什么方法可以改变/确定在使用不同演化集的多个数据库之间应用数据库演化的顺序?

【问题讨论】:

是否可以先打开你想应用进化的数据库,然后关闭另一个? 【参考方案1】:

不幸的是,我认为目前没有办法做到这一点。玩简单的iterates over the databases 并运行他们每个人的进化:

    dbApi.databases().foreach(runEvolutions)

数据库序列来自于配置映射,因此您无法保证读取它的顺序。

我认为您最好的选择是在多个步骤中运行演变,而不在每个步骤之间进行重大更改。迁移完成后,您进行另一次演变以清理移动的列/表。

【讨论】:

以上是关于在多个数据库上排序 Play Evolution的主要内容,如果未能解决你的问题,请参考以下文章

如何按多个 T.attributes 对 List<T> 进行排序?

Google Play 服务在 Android 2.3 Vision API 上崩溃

Play 框架依赖注入

暑假D1 T2 play(加速排序)

Play-book格式写法

Play框架中是不是可以有多个消息文件