我正在开发一个使用 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/