【问题标题】:Running evolutions on Play Framework 2.0在 Play Framework 2.0 上运行进化
【发布时间】:2012-01-24 21:08:09
【问题描述】:

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

【问题讨论】:

  • 我认为对“进化是自动激活的”这句话有误解。这句话是在“您可以通过设置 evolutionplugin=disabled 来禁用它们”的上下文中。激活并不意味着“自动应用”。我当然遭受了这种误解。

标签: playframework playframework-2.0


【解决方案1】:

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

【讨论】:

  • 这在开发模式下工作,但如果我在生产模式下运行示例,我会立即收到以下异常:糟糕,无法启动服务器。 play.api.db.evolutions.InvalidDatabaseRevision:数据库“默认”需要进化! [需要在您的数据库上运行 SQL 脚本。]
  • 好点,看起来需要在不久的将来实施。你仍然可以在 dev 中启动它,应用进化,然后切换到 prod。但我同意,它应该像 play 1.0 一样工作
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 这似乎没有必要...... 2.0.3 版 (playframework.org/documentation/2.0.3/Evolutions) 的文档表明,“进化是自动激活的”和“Play 将在每次之前检查您的数据库模式状态在 DEV 模式下请求”... 除非以上仅在 PROD 模式下相关 (??)。但是文档似乎根本没有提到这个配置参数。
    • 这是 Play 2.0.2 所必需的,不确定 2.0.3
    • 我正在使用 Play 2.2.x 并使用 % play -DapplyEvolutions.default=true 启动一个应用程序,它运行良好。
    • 播放 2.4+:play.evolutions.db.default.autoApply=true
    • 我认为对“进化是自动激活的”这句话有误解。这句话是在“您可以通过设置 evolutionplugin=disabled 来禁用它们”的上下文中。激活并不意味着“自动应用”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多