如何在Play Framework 2.0中使用Evolutions?

kaw*_*wty 5 playframework-2.0

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

Oli*_*alo 11

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

但这里是如何手动创建它们.

假设你有以下定义 application.conf

db.mydb.driver=org.h2.Driver
db.mydb.url=jdbc:h2:mem:play
Run Code Online (Sandbox Code Playgroud)

Play2将在以下文件夹中查找evolution:application/db/evolutions/mydb/ 在此文件夹中,evolutions应存储为sql文件,使用evolution步骤作为文件名.

例如:

application/db/evolutions/mydb/1.sql
application/db/evolutions/mydb/2.sql
application/db/evolutions/mydb/3.sql
Run Code Online (Sandbox Code Playgroud)

现在sql本身具有以下结构:

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

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

就像我在介绍中所说的,演变将在应用程序启动时神奇地应用.

  • 我讨厌魔法......现在魔法不起作用,如果我可以手动触发演变,它会非常有用......哦!刚想通了,我的2.sql有一个SQL错误,进化只是被忽略了! (7认同)