【问题标题】:How to use Evolutions in Play Framework 2.0?如何在 Play Framework 2.0 中使用 Evolutions?
【发布时间】:2011-11-17 08:33:49
【问题描述】:

对于play 1.x,我们可以使用play evolutions:apply,在play-2.0-beta 中如何操作?

【问题讨论】:

    标签: playframework-2.0


    【解决方案1】:

    Evolution:apply 在应用程序启动时自动运行。 Play 2.0-rc1 中缺少的是一种生成进化脚本的方法,并从 SBT 控制台手动应用它们。

    但这里是手动创建它们的方法。

    假设你在application.conf中有如下定义

    db.mydb.driver=org.h2.Driver
    db.mydb.url=jdbc:h2:mem:play
    

    Play2 将在以下文件夹中寻找进化:application/db/evolutions/mydb/ 在这个文件夹中,以sql文件的形式存储进化,使用进化步骤作为文件名。

    例如:

    application/db/evolutions/mydb/1.sql
    application/db/evolutions/mydb/2.sql
    application/db/evolutions/mydb/3.sql
    

    现在sql本身的结构如下:

    # --- !Ups
    create table company (
      id                        bigint not null,
      name                      varchar(255),
      constraint pk_company primary key (id));
    # --- !Downs
    drop table if exists company;
    

    !Ups 用于将模型升级到下一个演变
    !Downs 用于恢复 !Ups

    就像我在介绍中所说,进化将在应用程序启动时神奇地应用。

    【讨论】:

    • 我如何将这些应用到单元测试中?我的测试失败了,因为游戏抱怨缺少进化。
    • @Jan 如果使用 play 2.0 的 specs2,您可以使用以下命令运行演变: running(FakeApplication(additionalConfiguration = inMemoryDatabase())) { // blah blah }
    • 我讨厌魔法……现在魔法不起作用,如果我可以手动触发进化,那将非常有帮助……哦!刚刚想通了,我的 2.sql 有一个 SQL 错误,进化被忽略了!
    • 它仅适用于 prod 应用程序,您必须手动申请 dev 我相信。
    猜你喜欢
    • 2015-10-02
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    相关资源
    最近更新 更多