播放框架2.0的演变,如何将不一致状态标记为PROD中已解决

问题描述 投票:3回答:2

我有一个在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 env中的演变的正确方法。也就是说,此处未解释PROD的“标记为已解决”问题:http://www.playframework.com/documentation/2.1.1/Evolutions

scala heroku playframework-2.0
2个回答
5
投票

尽管我找不到通过play命令执行此操作的方法,但是可以通过直接编辑数据库来执行此操作。

想象一下您要从5.sql转到6.sql。这是您的工作:

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

-1
投票

不一致状态仅表示无法应用演进,因此该应用被阻止。更新您的演进脚本并重新部署。

© www.soinside.com 2019 - 2024. All rights reserved.