目前,我的进化以两种方式使用(在 Play!2 应用程序中):
- 它们用于定义数据库的结构
- 它们用于使用一些默认值填充数据库。
Downs 通常会破坏 Ups 所做的任何改变。我没有在 prod 模式下使用进化,但我知道它们是在应用程序启动时应用的。
这是否意味着更新应用程序会导致重新应用进化,从而导致我丢失所有数据?如果是这样,我该如何避免这种情况?
目前,我的进化以两种方式使用(在 Play!2 应用程序中):
Downs 通常会破坏 Ups 所做的任何改变。我没有在 prod 模式下使用进化,但我知道它们是在应用程序启动时应用的。
这是否意味着更新应用程序会导致重新应用进化,从而导致我丢失所有数据?如果是这样,我该如何避免这种情况?
如果您在生产模式下启用 Evolutions,则不会执行脚本的 Downs 部分。为此,您需要通过删除 conf/evolutions/default/1.sql 的前 2 行注释行来禁用 Evolution 文件的自动生成:
# --- Created by Ebean DDL
# To stop Ebean DDL generation, remove this comment and start using Evolutions
# --- !Ups
...
您还可以查看此问题以了解更多详细信息:玩!框架 - Evolutions 的数据库问题