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

Playframework 每次重新启动时重新创建架构,playframework,playframework-2.2,ebean,Playframework,Playframework 2.2,Ebean,我在cleer-cloud.com上有一个测试服务器,Git会自动推送任何新的提交 问题是,如果我得到任何模型更改,数据库“默认”处于不一致状态 问题在于,服务器上的play是在PROD模式下运行的,而不是在DEV模式下运行的。所以它并没有让我删除并重新生成模式(它只提供第一次生成模式,但不提供以后重新生成模式) 如何从Play应用程序本身删除并重新创建架构?我已经有了执行它的工作代码。但我不知道把它挂在哪里 我试着输入Global.onStart或Global.beforeStart,但在那里

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

问题是,如果我得到任何模型更改,数据库“默认”处于不一致状态

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

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

我试着输入Global.onStart或Global.beforeStart,但在那里,它进入了一个循环,Ebean创建表,我的代码一次又一次地删除所有表


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

实际上,这里有两个问题,第一,在生产模式下,您可以通过向start命令添加
-DapplyEvolutions=true
来强制添加演进(请检查聪明的云文档如何做到这一点)

其他事情更糟。。。您不应在生产中覆盖数据库。请记住,您正在丢失所有数据,因为演进只是删除现有数据库并从头开始创建它。相反,您应该避免自动创建演化(通过删除
1.sql
文件的前两行,并开始编写自定义演化(
2.sql
3.sql
等)


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

Thx供您回复,biesior!实际上我有“applyEvolutions.default=true”在我的clevercloud.conf.中,我还将其添加到sbt.json中,因此现在它有一个字符串:“goal”:“-Dconfig.resource=clevercloud.conf-DapplyEvolutions=true-DapplyEvolutions.default=true”。但它仍然无法以“数据库‘默认’处于不一致状态”开头.你知道为什么吗?当然我同意你对生产服务器的看法。在我的情况下,它仍然是一个开发服务器,在从Git推送之后才部署快照。它在PROD模式下运行,只是因为Smart cloud没有任何关于这方面的设置。当以前的进化应用了错误时,tbh不知道如何在remo上解决它主机(可能是数据库清除?),这就是我们决定独立MyBatis迁移的原因之一。另一个原因是,您可能可以使用一些GUI连接到DB并尝试修复行在play_evolutions Table中是的,从GUI我可以手动删除模式并创建新模式。其想法是创建一个自动管道,在提交后4-5分钟内,我在服务器上有一个工作副本。是的,我理解您想要的:)自动管道是一个要点,无论如何,
不一致状态
是应用EVO时出现问题的结果,当您创建自己的evolution时,它们只包含额外的内容,所以这些错误不应该发生(如果未经测试,您不应该发送)。我已手动清理了DB,并允许Ebean从头开始生成模式。现在,当我添加新的模型类,新的字段,并将它们推到聪明的云上时,它可以完美地编译,但不需要任何进化数据库的尝试。PersistenceException错误发生在我试图保存没有对应表的新模型类的实例时。似乎applyEvolutions=true标志仅对处于PROD中的第一次进化有效。