玩!框架 - Evolutions的数据库问题

soc*_*ket 11 java web-development-server playframework-2.0

我正在玩Play!框架2.0,我陷入了涉及数据库的恼人问题.

假设我有一个User(延伸Model它具有一些属性()类first_name,last_name,email,password等).

在某些时候,我想添加一个新属性,让我们说last_ip(它并不重要).所以,我将该属性添加到User类中,编译并运行.

问题是:我得到关于数据库更改的红色警报(显然),要求我按"应用更改"(如果我没记错的话).那很好但是!所有数据库记录都被删除了!

总结:我想要一个新的领域,但我不想丢失我已经添加到数据库的所有记录.这可能吗?

nde*_*rge 18

首先,您需要通过删除前两条注释行来禁用Evolution文件的自动生成conf/evolutions/default/1.sql:

# --- Created by Ebean DDL
# To stop Ebean DDL generation, remove this comment and start using Evolutions

# --- !Ups
...
Run Code Online (Sandbox Code Playgroud)

然后,您需要创建第二个文件,该文件conf/evolutions/default/2.sql在数据库模式中包含您的更新,其中包含Ups和Downs部分:

# --- !Ups
ALTER TABLE USER ADD COLUMN last_ip varchar(30) DEFAULT NULL;

# --- !Downs

ALTER TABLE USER DELETE COLUMN last_ip;
Run Code Online (Sandbox Code Playgroud)