未应用 Play 2.6 进化数据库更改
Play 2.6 evolutions DB change not applied
我的项目最近从 Play 2.5 更新到 2.6.13。
我添加了一个新脚本 16.sql 但更改未应用到 table play_evolutions
根据documentation 2.6,如果使用编译时DI,则必须注入EvolutionsComponents
。但是 Guice 是运行时 DI,所以我不应该注入任何组件。
我在 build.sbt
中启用了进化
libraryDependencies ++= Seq(evolutions, jdbc)
在application.conf
play.evolutions.enabled=true
play.evolutions.autoApply=true
我的项目缺少什么?欢迎任何 git 个例子
自从升级到 Play 2.6
,我按照 the documentation 解决了这个问题
这是我的代码
import play.api.ApplicationLoader.Context
import play.api.{Application, ApplicationLoader, BuiltInComponentsFromContext}
import play.api.db.{DBComponents, HikariCPComponents}
import play.api.db.evolutions.EvolutionsComponents
import play.api.routing.Router
import play.filters.HttpFiltersComponents
import router.Routes
class MyApplicationLoader extends ApplicationLoader {
def load(context: ApplicationLoader.Context): Application = {
new AppComponents(context).application
}
}
class AppComponents(context: Context)
extends BuiltInComponentsFromContext(context)
with DBComponents
with EvolutionsComponents
with HikariCPComponents
with HttpFiltersComponents {
// this will actually run the database migrations on startup
applicationEvolutions
// val prefix: String = "/"
lazy val router = Router.empty
// lazy val router: Router = bind(classOf[Routes]).to(classOf[Routes])
}
然后在 conf/application.conf 中添加这一行
play.application.loader=MyApplicationLoader
我的项目最近从 Play 2.5 更新到 2.6.13。 我添加了一个新脚本 16.sql 但更改未应用到 table play_evolutions
根据documentation 2.6,如果使用编译时DI,则必须注入EvolutionsComponents
。但是 Guice 是运行时 DI,所以我不应该注入任何组件。
我在 build.sbt
libraryDependencies ++= Seq(evolutions, jdbc)
在application.conf
play.evolutions.enabled=true
play.evolutions.autoApply=true
我的项目缺少什么?欢迎任何 git 个例子
自从升级到 Play 2.6
,我按照 the documentation 解决了这个问题这是我的代码
import play.api.ApplicationLoader.Context
import play.api.{Application, ApplicationLoader, BuiltInComponentsFromContext}
import play.api.db.{DBComponents, HikariCPComponents}
import play.api.db.evolutions.EvolutionsComponents
import play.api.routing.Router
import play.filters.HttpFiltersComponents
import router.Routes
class MyApplicationLoader extends ApplicationLoader {
def load(context: ApplicationLoader.Context): Application = {
new AppComponents(context).application
}
}
class AppComponents(context: Context)
extends BuiltInComponentsFromContext(context)
with DBComponents
with EvolutionsComponents
with HikariCPComponents
with HttpFiltersComponents {
// this will actually run the database migrations on startup
applicationEvolutions
// val prefix: String = "/"
lazy val router = Router.empty
// lazy val router: Router = bind(classOf[Routes]).to(classOf[Routes])
}
然后在 conf/application.conf 中添加这一行
play.application.loader=MyApplicationLoader