我已经通过执行以下操作从 scala 控制台中启动了我的应用程序:
scala> import play.core.StaticApplication
scala> new StaticApplication(new java.io.File("."))
我收到警告说默认数据库需要改进。如何从 scala 控制台中运行这些演变?
我已经通过执行以下操作从 scala 控制台中启动了我的应用程序:
scala> import play.core.StaticApplication
scala> new StaticApplication(new java.io.File("."))
我收到警告说默认数据库需要改进。如何从 scala 控制台中运行这些演变?
在控制台中运行它,假设"default"
:
play.api.db.evolutions.OfflineEvolutions.applyScript(new java.io.File("."), this.getClass.getClassLoader, "default")
或者,在开始 Play! 时,您可以让它自动应用进化:
play -DapplyEvolutions.default=true
...或将上述参数添加到您的配置中。
我不确定当时使用的是哪个版本的 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(...)
回答了无法使用的原因。
我认为最快的方法是:
play -DapplyEvolutions.default=true run
但是你可以添加
applyEvolutions.default=true
也到您的 application.conf