我正在使用Play!框架2.0,我陷入了涉及数据库的烦人问题。
假设我有一个User(延伸Model它有几个属性)类(first_name,last_name,email,password等)。
User
Model
first_name
last_name
email
password
在某个时候,我想添加一个新属性,可以说last_ip(它到底是什么并不重要)。因此,我将属性添加到User类中,进行编译和运行。
last_ip
问题是:我收到有关数据库更改的红色警报(很明显),它要求我按 “ APPLIC CHANGES” (如果我没记错的话)。很好,但是! 所有数据库记录都被删除 !
结论:我想要一个新字段,但是我不想丢失已经添加到数据库中的所有记录。这可能吗?
首先,您需要通过删除的前2条注释行来禁用Evolution文件的自动生成conf/evolutions/default/1.sql:
conf/evolutions/default/1.sql
# --- Created by Ebean DDL # To stop Ebean DDL generation, remove this comment and start using Evolutions # --- !Ups ...
然后,您需要创建另一个文件,该文件名为conf/evolutions/default/2.sqlUps和Downs部分,其中包含对数据库模式的更新:
conf/evolutions/default/2.sql
# --- !Ups ALTER TABLE USER ADD COLUMN last_ip varchar(30) DEFAULT NULL; # --- !Downs ALTER TABLE USER DELETE COLUMN last_ip;