我仍在开发我的应用程序的第一个版本2.如何重新生成进化脚本?
是否可以标记在playframework 2中应用的演变?
场景:我不得不更改已经应用的进化文件,因为它与H2不兼容,导致在测试期间不会应用剩余的进化.所以,我修好了.现在,应用程序想要重新应用修改后的演进.我想在不应用的情况下"标记已解决"(并避免删除以重新创建表格.)
我有一个问题,即已部署服务器上的play数据库演进一次又一次处于不一致状态。我不明白这是什么问题。
play clean compile stage我经常得到这个错误:
[error] play - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sequence life_cycle_event_seq' at line 1 [ERROR:1064, SQLSTATE:42000]
Oops, cannot start the server.
@6epm5i5m6: Database 'default' is in inconsistent state!
at play.api.db.evolutions.Evolutions$.checkEvolutionsState(Evolutions.scala:177)
at play.api.db.evolutions.Evolutions$.applyScript(Evolutions.scala:275)
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1$$anonfun$apply$1.apply$mcV$sp(Evolutions.scala:446)
at play.api.db.evolutions.EvolutionsPlugin.withLock(Evolutions.scala:483)
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:439)
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:437)
at scala.collection.immutable.List.foreach(List.scala:309)
at play.api.db.evolutions.EvolutionsPlugin.onStart(Evolutions.scala:437)
at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:63) …Run Code Online (Sandbox Code Playgroud) 在Evolutions的Play 2.3.x 文档中说
在开发模式中,简单地删除开发数据库并从头开始重新应用所有进化通常更简单.
但是它没有说明如何执行此操作.我可以使用某种激活器命令来执行此操作吗?如何重置和重新应用演变?
谢谢!
更新:我不想手动弄乱我的数据库,但似乎这是唯一的方法
我试图了解如何使用编译时DI运行演变.
import play.api.ApplicationLoader.Context
import play.api.cache.EhCacheComponents
import play.api.mvc.EssentialFilter
import play.api.routing.Router
import play.api._
import play.api.db.evolutions.{ DynamicEvolutions, EvolutionsComponents}
import play.filters.gzip.GzipFilter
import router.Routes
class AppLoader extends ApplicationLoader {
override def load(context: Context): Application = {
LoggerConfigurator(context.environment.classLoader).foreach(_.configure(context.environment))
new AppComponents(context).application
}
}
class AppComponents(context: Context) extends BuiltInComponentsFromContext(context) with EhCacheComponents with EvolutionsComponents {
lazy val applicationController = new controllers.Application(defaultCacheApi)
lazy val usersController = new controllers.Users(defaultCacheApi)
lazy val assets = new controllers.Assets(httpErrorHandler)
applicationEvolutions
// Routes is a generated class
override def router: Router = new Routes(httpErrorHandler, applicationController, usersController, …Run Code Online (Sandbox Code Playgroud) scala ×2