似乎每当我更改模型时,Play Framework都会要求我运行一个脚本,该脚本删除我的整个架构并重新创建它。显然,这不适用于生产,那么在生产中处理此问题的正确方法是什么?

注意,我正在使用ebean和Postgres,并在heroku上托管。

最佳答案

不幸的是Ebean只能创建CREATE DDL(而不是UPDATE DDL)(作为answered on their group),因此您需要尽快切换到manual evolutions

一些规则:

  • 在进行任何更改之前,请始终备份 Activity 数据库:)
  • 如果
  • ebean插件仅创建了由其创建的1.sql演变,则会重新创建整个DDL。
  • 您需要从1.sql中删除两个第一条注释,并开始用下一个数字2.sql3.sql等编写自己的演化。在切换到手动演化之前,尝试放置尽可能多的模型/字段。大部分将由插件自动完成。
  • 手动演变应包含现有表/列的ALTERS而不是DROP/CREATE,它们应同时具有:每次更改的UpsDowns
  • 尝试在每个演变中尽可能多地放置更改,对于每个小变化,管理起来容易,然后分别编写演变。

  • 实际上,有时使用DB gui修改DB结构会更容易,无论如何它主要适用于单个开发人员...当您需要与其他开发人员共享代码时,编写演化版本将是更好的选择。

    如果一段时间后,您将添加新模型的下一个“大”部分,则可以再次启用临时自动DDL,并使用本地git来复制新零件。然后恢复到自己的革命,并粘贴由Ebean插件生成的新零件。

    关于java - 如何在生产中处理Play Framework 2数据库的演变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14616005/

    10-09 21:21