play framework 2.0 evolution,如何在PROD中标记一个不一致的状态

时间:2013-05-06 13:39:31

标签: scala heroku playframework-2.0

我有一个在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

2 个答案:

答案 0 :(得分:5)

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

想象一下,您正试图从5.sql转到6.sql。这是你做的:

  1. 找出并解决导致数据库进入不一致状态的问题(即手动应用!Ups并解决所有问题)。
  2. 手动应用!Downs,以便数据库处于应用5.sql之后的状态。
  3. 进入您的数据库,找到名为play_evolutions的表格,然后查看ID为6的行。它应该在applying ups列中添加state之类的内容,并在last_problem列中显示错误消息。
  4. 删除标识为6的行。这将使Play认为您处于5.sql所处的状态。
  5. 现在,您应该可以运行play -DapplyEvolutions.default=true start以演变为6.sql

答案 1 :(得分:-1)

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