java - 如果模型发生变化,如何保留数据库数据

标签 java database playframework playframework-2.0 ebean

我正在开发一个使用 Play 框架的项目,它使用 EBean 作为 ORM API,我想知道如果我在向公众发布应用程序后需要更改模型,我该如何保留旧数据? 因为每次更新后都会创建一个新的卷积并重置数据。

最佳答案

Play 2.x 中的 Ebean 插件总是删除完整结构并重新创建它 - 这会导致数据丢失。不支持仅更新已更改的元素(根本不支持,即使在纯 Ebean 中)see post at their forum .

唯一的解决方法是禁用它并手动创建下一个演变(2.sql、3.sql 等),并仅将更改/添加的表和列放入其中。然后在文件 1.sql 文件中删除前两行(这表明它是使用插件创建的) - 在这种情况下,它不会尝试再次生成整个 DDL,而是会查找您的手动演变。

您可以选择使用您最喜欢的 GUI 来管理数据库的更改,有时它只是更快。

要完全禁用 Ebean 插件,请在 application.conf 中添加(或取消注释)此行:

evolutionplugin=disabled

关于java - 如果模型发生变化,如何保留数据库数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16250929/

相关文章:

java - 一个应用程序中的服务器和 ServerSocket : not working

java - JAXB 的混合内容不适用于 WSDL

java - 如何确定一个 bom 在 Maven 中的依赖(导入)位置?

java - 为我的 Android 应用程序设计数据库

java - 无法编写类路由器/路由

scala - 拆分 Play ! 2 应用成模块

具有不可序列化部分的 Java 序列化

mysql - 我应该重新计算表中的大量数据,还是应该将其保存在数据库中?

java - 使用条件选择查询

scala - 在 play-framework 中运行测试时如何应用 play-evolutions?