每次重新启动时重新创建架构

时间:2014-03-21 14:10:16

标签: playframework playframework-2.2 ebean

我在clever-cloud.com上有一个测试服务器,Git会自动推送任何新的提交。

问题出在任何模型更改的情况下我得到数据库'默认'处于不一致状态错误。

问题是服务器播放是在PROD中运行,而不是在DEV模式下运行。所以它不会让我删除并重新生成模式(它只提供第一次生成模式,但不会在以后重新生成模式)。

如何从Play应用程序本身删除并重新创建架构?我已经有了执行它的工作代码。但我不知道在哪里挂它。

我已经尝试过加入Global.onStart或Global.beforeStart,但是它进入循环,Ebean创建表格,我的代码一次又一次地丢弃它们。

如何让它在重启后运行一次,然后才允许Ebean生成模式?

1 个答案:

答案 0 :(得分:1)

实际上你在这里有两个问题,首先,在生产模式中你可以通过在你的启动命令中添加-DapplyEvolutions=true来强制添加进化(检查聪明的云文档如何做到这一点)。

其他事情要糟糕得多......你不应该在生产中覆盖你的数据库。请记住,您正在丢失所有数据,因为进化只会丢弃现有数据库并从头开始创建。相反,你应该避免自动创建进化(删除1.sql文件的第一行,然后开始编写自定义进化(2.sql3.sql等。)

另一方面,我们决定切换到MyBatis Migrations以便在远程服务器上应用更改,它与Evolutions几乎完成相同的工作,无论如何都更灵活一点(它是独立的,不播放插件)