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 に答える