先前演化变化的行为

时间:2018-07-31 11:43:04

标签: playframework

上下文:我有一个PlayFramework 2.5后端,其中MySQL数据库正在运行演变。我目前正在生产中运行的Evolution#23。 但是,在生产中重新安装之前的版本19中的一个时出现了错误,这使我将版本19更改为无法在dev上运行所有版本。 主要更改是删除外键。

假设我有

  

db.autoApply = true

     

db.autoApplyDowns = true

认为我应该将autoApplyDowns更改为false,也不确定如何影响。

问题:如果我保存生产变更,将会发生什么?因为它已经应用,它会忽略#19吗?

1 个答案:

答案 0 :(得分:0)

autoApplyDowns仅影响在生产模式下的运行,并确定是否自动应用向下扩展。我建议您将其设置为false

autoApply-导致起伏在Dev中自动应用,但只有起伏在Prod中应用。

这两个设置的默认值为false,我个人更喜欢这样做,因为如果脚本和数据库模式的状态之间不同步,则Play会报告问题,因此您可以手动修复它们-当应用程序启动(在Prod中)或在首次请求(在Dev中)时,它将报告这些问题。

最安全的选择是将两者都更改为false,丢弃您的开发数据库,​​并从头开始应用所有演变作为对Dev中任何问题的健全性检查。这对于Prod来说是安全的,因为这意味着下次部署演化更改时仅应用Ups。如果那时您有任何问题,Play会在更改数据库模式之前报告问题-然后,您将有机会在生产数据库上手动运行一些SQL,以便在考虑问题时恢复同步或退出发行版

相关问题