我正在使用 Play! framework 2.0,我陷入了一个涉及数据库的恼人问题。
假设我有一个 User
(扩展 Model
)类,它有几个属性(first_name
,last_name
, 电子邮件
、密码
等)。
有时我想添加一个新属性,比如last_ip
(它是什么并不重要)。因此,我将属性添加到 User
类,编译并运行。
问题是:我收到关于数据库更改的红色警报(很明显),它要求我按“应用更改”(如果我没记错的话)。没关系,但是! 所有数据库记录都被删除!
结论:我想要一个新字段,但我不想丢失我已经添加到数据库中的所有记录。这可能吗?
最佳答案
首先,您需要通过删除 conf/evolutions/default/1.sql
的前 2 行注释来禁用 Evolution 文件的自动生成:
# --- Created by Ebean DDL
# To stop Ebean DDL generation, remove this comment and start using Evolutions
# --- !Ups
...
然后,您需要创建第二个名为 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;
关于java - 玩!框架 - Evolutions 的数据库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12123052/