我们正在使用 play 2.1.1 将新应用程序部署到生产环境中,并且遇到了一些实际问题,非常有限的文档并没有太大帮助......
所以是时候更新到新版本了,我们运行了我们通常的停止/升级/启动脚本,但它们失败了。出于某种原因,游戏拒绝应用进化。开始的时候一直说
糟糕,无法启动服务器。@6elnj89fh:数据库“默认”需要进化!
即使我们尝试applyEvolutions.default=true
通过命令行和 application_prod.conf 文件进行设置也是如此。它还抱怨说
警告!此脚本包含可能具有破坏性的 DOWNS 演变
这对我来说没有多大意义,因为我们正在升级版本,所以无论如何都不应该应用下降。但似乎这可能是它拒绝应用进化的原因。
在这一点上,我并不担心,因为我认为有一些手动的方式来应用进化。经过广泛的搜索后,它看起来好像......在游戏 1 中支持此功能,但在游戏 2 中不支持。在开发模式下,您只需按下浏览器中的按钮即可应用进化,但在生产模式下,我找不到任何方法手动应用进化。这是真的还是我错过了?我真的认为这是一个重要的功能!(事后看来,我可以手动应用脚本并禁用进化插件,但我会失去有用的进化跟踪..)
我还想知道您将如何“支持”您的数据库,因为我相信我们会在某个时候需要这样做。如果有手动方式来做到这一点,它可能会有一个可选的版本参数来降级数据库。例如,如果您处于第 5 版并且需要返回到第 4 版,那么您play apply-evolutions 4
将运行它,然后应用第 5 版的降级并相应地更新进化数据库。我可以手动应用下降,但问题是进化数据库将再次处于无效状态......
越来越绝望,我尝试了所有我能找到的设置来重新启动服务器并添加了-DapplyDownEvolutions.default=true
选项。我假设此设置仅在选择降级数据库时才会应用降级(尽管似乎没有这样的选项),但实际上它所做的是应用 ups 然后立即应用 downs (我后来在故障排除中发现了这一点服务器现在终于启动了 - 没有任何消息 - 但在访问该站点时给出了一个神秘的错误消息)。这是这个设置应该做的吗?如果是,我无法理解为什么该设置甚至存在。我想不出在迁移到更新的数据库版本时您想要应用 ups 然后立即 downs 的任何场景。有人可以解释一下这个设置吗?
在这一点上,我终于可以通过手动重新运行适当的“UPs”来让应用程序再次运行。
在这一点上,我们基本上正在为我们自己的进化处理重新编写脚本,以便更好地控制正在运行的内容并启用返回。如果能够为此使用播放功能会更好,所以我我希望有人可以对此有所了解。如果没有,也许这个咆哮可以帮助处于类似情况的人......