我有一个在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
尽管我找不到通过play
命令执行此操作的方法,但是可以通过直接编辑数据库来执行此操作。
想象一下您要从5.sql
转到6.sql
。这是您的工作:
!Ups
并解决所有问题)。!Downs
,以便数据库处于应用5.sql
之后的状态。play_evolutions
的表,然后查看ID为6
的行。它应该在applying ups
列中说类似state
,并在last_problem
列中显示错误消息。6
的行。这会使Play认为您处于5.sql
的状态。play -DapplyEvolutions.default=true start
演变为6.sql
。不一致状态仅表示无法应用演进,因此该应用被阻止。更新您的演进脚本并重新部署。