2

我已经通过执行以下操作从 scala 控制台中启动了我的应用程序:

scala> import play.core.StaticApplication
scala> new StaticApplication(new java.io.File("."))

我收到警告说默认数据库需要改进。如何从 scala 控制台中运行这些演变?

4

3 回答 3

7

在控制台中运行它,假设"default"

play.api.db.evolutions.OfflineEvolutions.applyScript(new java.io.File("."), this.getClass.getClassLoader, "default")

或者,在开始 Play! 时,您可以让它自动应用进化:

play -DapplyEvolutions.default=true

...或将上述参数添加到您的配置中。

于 2013-07-22T19:03:01.353 回答
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 源代码2.5.x 源代码。请注意,对于 2.5.x,OfflineEvolutions.applyScript需要附加dbName和(可选)schema参数。

作为旁注,这里new play.core.StaticApplication(...)回答了无法使用的原因。

于 2016-04-01T15:52:07.493 回答
2

我认为最快的方法是:

play -DapplyEvolutions.default=true run

但是你可以添加

applyEvolutions.default=true

也到您的 application.conf

于 2013-07-23T17:06:52.240 回答