我已经从scala控制台中启动了我的应用程序:
scala> import play.core.StaticApplication
scala> new StaticApplication(new java.io.File("."))
我收到警告,默认数据库需要进化。如何在scala控制台中运行这些演变?
答案 0 :(得分:7)
在控制台中运行此操作,假设为"default"
:
play.api.db.evolutions.OfflineEvolutions.applyScript(new java.io.File("."), this.getClass.getClassLoader, "default")
或者,当开始播放!时,您可以自动应用演变:
play -DapplyEvolutions.default=true
...或将以上参数添加到您的配置中。
答案 1 :(得分:3)
我不确定Play @mushroom当时使用的是哪个版本(最常见的是Play 2.2),但事情发生了一些变化。通过在控制台中执行以下操作,我能够获得与@opyate相同的结果:
import play.api._
import play.api.db._
import play.api.db.evolutions._
// Start the application (instead of using `new play.core.StaticApplication(...)`)
val env = Environment(new java.io.File("."), this.getClass.getClassLoader, Mode.Dev)
val context = ApplicationLoader.createContext(env)
val loader = ApplicationLoader(context)
implicit val app = loader.load(context)
// Apply the evolutions
OfflineEvolutions.applyScript(
new java.io.File("."),
this.getClass.getClassLoader,
app.injector.instanceOf[DBApi],
"default",
true
)
这是2.4.x source和2.5.x source。请注意,对于2.5.x,OfflineEvolutions.applyScript
需要额外的dbName
和(可选)schema
参数。
作为旁注,无法使用new play.core.StaticApplication(...)
的原因已经回复here。
答案 2 :(得分:2)
我认为最快的方法是:
play -DapplyEvolutions.default=true run
但你可以添加
applyEvolutions.default=true
到您的application.conf