playframework - 先前进化变化的行为
问题描述
上下文:我有一个 PlayFramework 2.5 后端和 MySQL db 运行演变。我目前正在生产中运行的进化#23。但是,在生产环境中进行全新安装时,之前的演进#19 出现了一个错误,这让我更改了演进#19 以便能够在 dev 上运行所有演进。主要的变化是删除了一个外键。
假设我有
db.autoApply = true
db.autoApplyDowns = true
认为我应该将 autoApplyDowns 更改为 false,也不确定它会如何影响。
问题:如果我在生产中保存更改会发生什么?它会忽略#19,因为它已经应用了它吗?
解决方案
autoApplyDowns
仅影响在生产模式下运行并确定是否自动应用向下进化。我鼓励您将其设置为false
.
autoApply
- 导致在 Dev 中自动应用 ups 和 downs,但在 Prod 中只应用 ups。
这两个设置的默认设置是false
,我个人更喜欢这样,因为如果脚本和数据库模式的状态之间有任何不同步的地方,那么 Play 将报告问题,以便您可以手动修复它们 - 它会报告这些问题当应用程序启动时(在 Prod 中)或在第一次请求时(在 Dev 中)。
最安全的选择是将两者都更改为false
,丢弃您的开发数据库,并从头开始应用所有演变,作为对开发中任何问题的健全性检查。这对 Prod 来说是安全的,因为这意味着下次部署演进更改时只会应用 Ups。如果您此时有任何问题,Play 将在更改数据库架构之前报告问题 - 然后您将有机会在您的生产数据库上手动运行一些 SQL 以恢复同步或在您考虑问题时退出发布.
推荐阅读
- vb.net - 如何在vb中使图片框下降
- python - 如果没有找到空值,则打印一个字符串
- javascript - TypeORM,将当前 transactionalEntityManager 传递给实体方法
- c# - Unity android apk 突然变大了?
- r - 用小数将儒略日转换为R中的日期和小时
- qml - 使用 QtQuick 2.9 检索按钮单击时使用的修饰符
- spring-boot - 如何修复 Spring 中的 .UnsatisfiedDependencyException 错误?
- python - 加入两个 pandas 数据框以查找买入/卖出数据的净头寸
- python - np.genfromtxt 缺失值
- javascript - 为什么我们不能链接 javascript createElement() 和 setAttribute()?