我在clever-cloud.com上有一个测试服务器,Git会自动推送任何新的提交。
问题出在任何模型更改的情况下我得到数据库'默认'处于不一致状态错误。
问题是服务器播放是在PROD中运行,而不是在DEV模式下运行。所以它不会让我删除并重新生成模式(它只提供第一次生成模式,但不会在以后重新生成模式)。
如何从Play应用程序本身删除并重新创建架构?我已经有了执行它的工作代码。但我不知道在哪里挂它。
我已经尝试过加入Global.onStart或Global.beforeStart,但是它进入循环,Ebean创建表格,我的代码一次又一次地丢弃它们。
如何让它在重启后运行一次,然后才允许Ebean生成模式?
答案 0 :(得分:1)
实际上你在这里有两个问题,首先,在生产模式中你可以通过在你的启动命令中添加-DapplyEvolutions=true
来强制添加进化(检查聪明的云文档如何做到这一点)。
其他事情要糟糕得多......你不应该在生产中覆盖你的数据库。请记住,您正在丢失所有数据,因为进化只会丢弃现有数据库并从头开始创建。相反,你应该避免自动创建进化(删除1.sql
文件的第一行,然后开始编写自定义进化(2.sql
,3.sql
等。)
另一方面,我们决定切换到MyBatis Migrations以便在远程服务器上应用更改,它与Evolutions几乎完成相同的工作,无论如何都更灵活一点(它是独立的,不播放插件)