数据库演变在Play框架中不起作用,我得到了以下异常

时间:2016-09-20 09:25:40

标签: postgresql scala playframework sbt slick

我正在使用以下行来运行放置在conf/evolutions/default/1.sql

中的进化脚本
libraryDependencies += evolutions

我得到意外的异常

CreationException: Unable to create injector, see the following errors:

1) No implementation for play.api.db.DBApi was bound.
  while locating play.api.db.DBApi
    for parameter 3 at play.api.db.evolutions.ApplicationEvolutionsProvider.<init>(EvolutionsModule.scala:45)
  at play.api.db.evolutions.EvolutionsModule.bindings(EvolutionsModule.scala:22):
Binding(class play.api.db.evolutions.ApplicationEvolutions to ProviderConstructionTarget(class play.api.db.evolutions.ApplicationEvolutionsProvider) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)

2) No implementation for play.api.db.DBApi was bound.
  while locating play.api.db.DBApi
    for parameter 0 at play.api.db.evolutions.DefaultEvolutionsApi.<init>(EvolutionsApi.scala:71)
  at play.api.db.evolutions.EvolutionsModule.bindings(EvolutionsModule.scala:21):
Binding(interface play.api.db.evolutions.EvolutionsApi to ConstructionTarget(class play.api.db.evolutions.DefaultEvolutionsApi)) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)

2 errors

我使用Scala版本2.11.7与Slick 3.0.3和Postgresql数据库。知道我做错了什么吗?我还尝试在db.default.driver文件中添加db.default.urlconf/application.conf属性。那没用。

1 个答案:

答案 0 :(得分:0)

Guice失败,因为它无法使用给定的配置创建数据库连接。

确保您的配置正确并指向正确的数据库。

我正在使用具有以下配置的play-slick,它对我来说效果很好。

build.sbt

"com.typesafe.play" %% "play-slick" % "2.0.0"

application.conf

slick.dbs.default.driver="slick.driver.PostgresDriver$"
slick.dbs.default.db.driver="org.postgresql.Driver"
slick.dbs.default.db.url="jdbc:postgresql:dasldaljdlajdja"
slick.dbs.default.db.user=sasdas
slick.dbs.default.db.password="adasdasdas"