2011-12-20 78 views
18

这最近的帖子,How to use Evolutions in Play Framework 2.0?,说运行Play 2.0时会自动应用演变。我已经尝试了play-2.0-beta下载和最新的git代码,我没有看到这种行为。事实上,我找不到在生产模式中应用变革的方法。我错过了什么吗?Play Framework 2.0上运行的演变

+0

我认为对“演变会自动激活”这个句子有误解。这句话是在“您可以通过设置evolutionplugin = disabled来禁用它们”的情况下进行的。激活并不意味着“自动应用”。我当然受到这种误解的困扰。 – GreenAsJade 2015-11-29 11:39:15

回答

34

applyEvolutions.default=true添加到您的application.conf文件中将默认在您的应用程序中启用evolution。

+0

这似乎没有必要......版本2.0.3(http://www.playframework.org/documentation/2.0.3/Evolutions)的文档表明, “演变会自动激活”和“在DEV模式下每次请求之前播放将检查您的数据库模式状态”......除非上述内容仅与'PROD'模式(??)相关。但文档似乎没有提到这个配置参数。 – 2012-09-12 20:16:43

+0

这是Play 2.0.2所必需的,不确定2.0.3 – 2012-09-13 10:31:17

+1

我正在使用Play 2.2.x并使用%play -DapplyEvolutions.default = true启动应用程序,这非常完美。 – Langley 2013-09-30 13:54:13

3

请尝试其中一个Play 20示例应用程序,系统会提示您在应用程序启动时应用演变 - 第一次启动应用程序时,请求会显示在应用程序浏览器中。

+2

这在开发模式下工作,但如果我在生产模式下运行示例,我立即得到以下异常:糟糕,无法启动服务器。 play.api.db.evolutions.InvalidDatabaseRevision:数据库'默认'需要进化! [一个SQL脚本需要在你的数据库上运行。] – 2011-12-21 17:26:25

+0

好点,看起来像是需要在不久的将来实现的东西。你仍然可以在dev中启动它,应用进化,然后切换到prod。但我同意,它应该作为游戏1.0 – 2011-12-24 12:09:06

3

从RC-3开始,evolutions脚本的新位置位于conf/evolutions/[dbname] /1.sql中。否则,上述信息仍然准确无误。