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

标签 java playframework-2.0 web-development-server

我正在使用 Play! framework 2.0,我陷入了一个涉及数据库的恼人问题。

假设我有一个 User(扩展 Model)类,它有几个属性(first_namelast_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/

相关文章:

java - 导出后,可运行 Jar 文件不运行

java - Play框架: package javax.注入(inject)不存在

html - Spring 启动 java.lang.NullPointerException : null

java - 如何使用 intellij IDEA 创建带有 gradle 项目的 java servlet

java - 整个应用程序的单一验证修订

java - 在 Java Swing 中用 HTML 描边文本

playframework - 在 Play 中放置@Transactional 注释的位置

playframework-2.0 - 在Scala模板中打印HTML

c++ - 是否可以用 C++ 创建网页?

java - Android unicode 西里尔文字符串在传入函数时变为 С