一尘不染

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

java

我正在使用Play!框架2.0,我陷入了涉及数据库的烦人问题。

假设我有一个User(延伸Model它有几个属性)类(first_namelast_nameemailpassword等)。

在某个时候,我想添加一个新属性,可以说last_ip(它到底是什么并不重要)。因此,我将属性添加到User类中,进行编译和运行。

问题是:我收到有关数据库更改的红色警报(很明显),它要求我按 “ APPLIC CHANGES” (如果我没记错的话)。很好,但是!
所有数据库记录都被删除

结论:我想要一个新字段,但是我不想丢失已经添加到数据库中的所有记录。这可能吗?


阅读 182

收藏
2020-12-03

共1个答案

一尘不染

首先,您需要通过删除的前2条注释行来禁用Evolution文件的自动生成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部分,其中包含对数据库模式的更新:

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

# --- !Downs

ALTER TABLE USER DELETE COLUMN last_ip;
2020-12-03