4

我有一个在 scala play2.0 中开发的应用程序,它在本地成功运行,但如果部署到 heroku 时失败。

失败的原因是我在本地使用 H2 数据库,并在 heroku 中使用 postgresql,我必须将其中一种数据类型从“clob”更改为“text”。

根据 play20 文档,现在的问题是 heroku 中的数据库处于“不一致的状态”。在 DEV 模式(本地)下,您可以在 html 出现时单击“将其标记为已解决”。

如何在 heroku PROD 环境中“将其标记为已解决”? http://www.playframework.com/documentation/2.1.1/Evolutions

ps:注意,因为是新应用,我刚刚删除了数据库重新启动。但是,在这里我要问的是在 PROD 环境中处理演变的正确方法是什么。也就是说,这里没有解释 PROD 的“标记为已解决”问题:http ://www.playframework.com/documentation/2.1.1/Evolutions

4

2 回答 2

6

虽然我找不到通过play命令的方法,但您可以通过直接编辑数据库来完成。

想象一下,你正试图从5.sql6.sql。这是你要做的:

  1. 找出并修复导致数据库进入不一致状态!Ups的问题(即手动应用并修复所有问题)。
  2. 手动应用您!Downs的数据库,使数据库处于5.sql应用后的状态。
  3. 进入您的数据库,找到名为 的表play_evolutions,然后查看带有 id 的行6。它应该在列中显示类似的内容,并applying upsstate列中显示错误消息last_problem
  4. 删除带有 id 的行6。这将使 Play 认为您处于您的状态5.sql
  5. 现在你应该可以运行play -DapplyEvolutions.default=true start进化到6.sql.
于 2013-10-15T20:54:34.547 回答
-2

不一致的状态只是意味着无法应用进化,因此应用程序被阻止。更新您的进化脚本并重新部署。

于 2013-05-06T15:51:44.100 回答