我有一个在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
答案 0 :(得分:5)
虽然我找不到通过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
。答案 1 :(得分:-1)
不一致状态只意味着无法应用演变,因此应用程序被阻止。更新您的进化脚本并重新部署。