在多个数据库上排序 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> 进行排序?