首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数据库标记为与Play在生产中解决的不一致状态

如何将数据库标记为与Play在生产中解决的不一致状态
EN

Stack Overflow用户
提问于 2014-12-29 12:41:39
回答 1查看 2K关注 0票数 3

我在以下环境中使用Scala版本2.3.1

  • 笔记本电脑的开发
  • 使用Heroku部署进行测试
  • 使用Heroku部署

我正在使用演化对数据库结构进行更改。它有一点复杂,包括删除索引和添加其他索引。这是进化论5。测试和直播目前正在进化4。

如果我吹走了开发机器上的数据库,应用程序就会像预期的那样工作。如果我部署到测试,当我访问任何网页时,我会得到“应用程序错误”

在我得到的日志中:

如果您想要自动运行它们,请使用-DapplyEvolutions.default=true和-DapplyDownEvolutions.default=true进行播放--包括下降(特别是当您的向下进化删除现有数据时)数据库‘默认’需要进化!哎呀,不能启动服务器。

我确实有-DapplyEvolutions.default=true集,但我没有启用“don”(它们具有破坏性,我不想执行它们),当我通过SQL松鼠访问数据库时,我会发现以下内容

  • 5行
  • 每一列“applied_at”中都有一个数据(包括第5行)
  • 每个列'state‘都有“应用”的值。

我对数据库进行了调查,并应用了进化5。

因此,如果我在开发模式下运行,我可能会得到网页‘数据库默认处于不一致的状态’。我会点击‘标记它解决’按钮,我可以继续

当我在“生产模式”中运行时,我如何做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2015-01-05 08:47:58

我从Framework收到了这个答案

不幸的是,如果您以Prod模式运行应用程序,则无法“将数据库标记为已解决”。我认为这是一个问题的发挥,你能提出一个问题(http://github.com/playframework/playframework/issues)吗? 为了解决您的问题,您可以在开发模式下运行应用程序(使用sbt run),然后单击web浏览器中的按钮,或者手动更新play_evolutions表以将冲突标记为已解决的冲突(以下是Play:https://github.com/playframework/playframework/blob/master/framework/src/play-jdbc/src/main/scala/play/api/db/evolutions/EvolutionsApi.scala#L297-L311实现的方法)。

在引发此问题后,我手动执行了以下操作

代码语言:javascript
复制
update play_evolutions set state = 'applied' where state = 'applying_up' and id = " + revision
delete from play_evolutions where state = 'applying_down' and id = " + revision

这并不能解释我所有的症状:但我很容易就有两个问题。例如,当我查看play_evolution表时,没有“applying_up”或“applying_down”。然而,这确实“解决了”了问题的这一部分,并对我对正在发生的事情有很大的帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27689119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档