当前位置: 首页 > 面试题库 >

如何在生产中处理Play Framework 2数据库的演变

彭琛
2023-03-14
问题内容

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

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


问题答案:

不幸的是,Ebean只能创建CREATE DDL (不能创建UPDATE DDL)(如其组中所述),因此您需要尽快切换到手动演化。

一些规则:

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

实际上,有时使用DB gui修改DB结构会更容易,反正它主要适用于单个开发人员…当您需要与其他开发人员共享html" target="_blank">代码时,编写演化版本将是更好的选择。

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



 类似资料:
  • 问题内容: 使用Spring框架和hibernate模式在生产数据库上进行升级过程的最佳实践是什么? 问题答案: 您也可以在Flyway上花很多时间:http://flywaydb.org 比Liquibase简单得多。

  • 我在控制台中看到正确的changelog弹出,但在我的changelogs文件夹下没有创建changelog。我做错了什么?

  • 问题内容: 由于数据库表中的值为空,我得到“ org.hibernate.PropertyAccessException” 。如何处理异常? 我的档案是 FetchTest.java FetchTest.java Employee.java hibernate.cfg.xml employee.hbm.xml When I ran this application I am getting bel

  • 假设我有两个经纪人。 我读到Kafka制作人创建的制作人线程等于经纪人的数量。在这种情况下,我将有两个内部线程。 假设我有5个主题,每秒只收到200条消息。Kafka如何进行批处理? 一批大小=30条消息。[topic1=5,topic2=10,topic3=3,topic4=10,topic5=2消息]这些是最重要的消息和相应的主题。 Kafka是如何执行批处理的?

  • 我正在使用Spring云流Kafka流编写Java应用程序。下面是我正在使用的函数方法片段: fetch_data_from_database()可以抛出异常。 如果fetch\u from\u database()发生异常,如何停止对入站KStream的处理(不应提交偏移量),并使其使用相同的偏移量数据重试处理?

  • 问题内容: 如何从Node.js中的HTTP 方法提取表单数据()和文件上传? 我已经阅读了文档,谷歌搜索并没有发现任何东西。 有图书馆还是黑客? 问题答案: 如果使用Express(用于Node.js的高性能,高级Web开发),则可以执行以下操作: HTML: API客户端: Node.js :( 自Express v4.16.0起) Node.js :( 适用于Express <4.16.0)