Playframework 玩框架JBoss AS 7部署,如何初始化数据库?

Playframework 玩框架JBoss AS 7部署,如何初始化数据库?,playframework,jboss7.x,Playframework,Jboss7.x,我正在尝试将Play 1.2.4应用程序部署到JBoss 7.0.2服务器(不允许使用Play嵌入式服务器) 我已经遇到了以下问题: 必须拆除防波堤(参见),拆除震击器 一个getSomething函数将触发一个,暂时解决了删除有问题的方法-NB的问题。对我来说,它只发生在JBoss中,而不是在play服务器模式下 现在我试图理解初始化数据库的模式是什么 最好的办法是什么?我应该设置jpa.ddl=update然后再对其进行注释,还是有更好的方法?您可以将其留给用户更新或使用管理数据库更改

我正在尝试将Play 1.2.4应用程序部署到JBoss 7.0.2服务器(不允许使用Play嵌入式服务器)

我已经遇到了以下问题:

  • 必须拆除防波堤(参见),拆除震击器
  • 一个
    getSomething
    函数将触发一个,暂时解决了删除有问题的方法-NB的问题。对我来说,它只发生在JBoss中,而不是在play服务器模式下
现在我试图理解初始化数据库的模式是什么


最好的办法是什么?我应该设置
jpa.ddl=update
然后再对其进行注释,还是有更好的方法?

您可以将其留给用户更新或使用管理数据库更改


演进倾向于让您更好地控制模式更改,许多人更喜欢在生产环境中使用它。

与此同时,我在lighthouse play错误跟踪系统上发现

存在。只有当数据库不存在时,它才会修改数据库。敏感

在我看来,这是一个很好的默认设置,因为通常部署数据库时还没有

这回答了我一半的问题

现在,我想知道是否有一种方法可以在创建数据库之前启动迁移,或者
jpa.ddl=create
是否达到了预期效果

编辑 我必须说,我还远远没有找到一个令人满意的解决办法

我甚至还没有完全理解ddl=create应该如何工作,缺乏精确的文档也不可能改变

这就是我现在所做的:

我使用
ddl=update
,在初始开发的大部分时间里将数据库保存在内存中。 当我觉得自己相对稳定时,我会转移到mysql数据库,并开始编写@emt14建议的演进

我个人一直在使用memdb来快速获取正确的sql来编写我自己的进化,我有一些不同的playid来从mem切换到文件到真实的数据库,这样我可以在快速测试新代码的同时保持数据的持久性

我曾经写过很多fixture,但我不知道有什么方法可以轻松地将它们转化为演进(除了复制生成的sql!),所以我可能会停止这样做

也许有一天我会试试。。。但事实上,在这之前,我更有可能去玩2.x。除了维护现有项目外,1.2.x系列还有太多的牵引力


总而言之,我最终主要使用两个极端(
ddl=update
with
mem-db
ddl=none
with
mysql/pgsql
real-database)和手动从mem:db转储数据来编写我自己的演化,包括所需的初始装置(不同于测试数据装置)。

对于数据库更改,我见过的大多数项目都有专有的解决方案——只需检查模式并添加缺少的列和表即可。通常不考虑降级:)


无论如何,在结构变化的情况下,我可能不会让一些工具摆弄数据,而是依赖DBA和测试人员来开发和测试防弹迁移脚本

就我个人而言,我不太喜欢自动生成ORMDDL,所以我更喜欢进化。特别是在生产环境中,我更喜欢分两个不同的步骤进行部署:(1)更新数据库,然后(2)部署新版本。我也更喜欢生产环境中的演进,而且在任何情况下,显式的数据库修改都优于透明的数据库修改。我有点困惑的是如何引导数据库。听起来很奇怪,我不得不为它编辑两次
application.conf
。“他们只需检查模式并添加缺少的列和表”。。。通常如何生成包含表和初始数据(装置)的第一个SQL文件?我喜欢那出戏,它自己能演。。。但是我怎样才能告诉他/什么时候/去做呢?我在回答中提到的“创建”选项是向前迈出的一大步,但我仍然缺少一些东西。。。。
jpa.ddl = create