/ / Brak implementacji dla play.api.db.slick.DatabaseConfigProvider został oprawiony - scala, playframework, slick

Brak implementacji dla play.api.db.slick.DatabaseConfigProvider - scala, playframework, slick

Nie mogę być zgrabny, aby pracować z grą 2.5.x

Otrzymuję następujący błąd środowiska wykonawczego:

ProvisionException: Unable to provision, see the following errors:

1) No implementation for play.api.db.slick.DatabaseConfigProvider was bound.
while locating play.api.db.slick.DatabaseConfigProvider

Moje DAO wygląda tak:

@Singleton
class UserDAO @Inject() (protected val dbConfigProvider: DatabaseConfigProvider)
extends HasDatabaseConfigProvider[JdbcProfile] {
import driver.api._

...

}

I po prostu wstrzyknę to w mój kontroler jak:

@Singleton
class UserController @Inject() (ws: WSClient, cache: CacheApi, userDAO: UserDAO) extends Controller {
...
}

build.sbt

scalaVersion := "2.11.7"

libraryDependencies ++= Seq(
cache,
ws,
"org.scalatestplus.play" %% "scalatestplus-play" % "1.5.1" % Test,
// database
jdbc,
"org.postgresql"     %  "postgresql" % "9.3-1102-jdbc41",
"com.typesafe.play" %% "play-slick" % "2.0.0"
)

Mój application.conf ma:

play.db {
# The combination of these two settings results in "db.default" as the
# default JDBC pool:
#config = "db"
#default = "default"

# Play uses HikariCP as the default connection pool.  You can override
# settings by changing the prototype:
prototype {
# Sets a fixed JDBC connection pool size of 50
#hikaricp.minimumIdle = 50
#hikaricp.maximumPoolSize = 50
}
}

## JDBC Datasource
db {
default.driver = org.postgresql.Driver
default.url = "jdbc:postgresql://localhost/testdb_development"
default.username = "blankman"
#default.password = ""
}

Jeśli zmienię nazwę bazy danych, otrzymam komunikat o błędzie, więc pula pobiera poprawne ustawienia konfiguracji.

Odpowiedzi:

2 dla odpowiedzi № 1

Jednym z problemów, które widzę w twoim application.conf jest to, że pomija on specyficzne dla gry klawisze konfiguracyjne. W rzeczywistości powinieneś usunąć db sekcji z pliku application.conf i zastąp go slick.dbs jak pokazano w https://www.playframework.com/documentation/2.5.x/PlaySlick#database-configuration

Kolejną rzeczą, którą prawdopodobnie chcesz zrobić, to usunięcie jdbc Zależność od pliku kompilacji sbt, zgodnie z moją wiedzą (opartą na Play 2.4.x), nie można używać zarówno play-slick, jak i jdbc w tym samym projekcie Play.

Zdecydowanie polecam przeczytanie dokumentacji Play-Slick, aby lepiej zrozumieć, jak to działa.

Mam nadzieję że to pomoże!


0 dla odpowiedzi nr 2

Rozwiązuję ten problem za pomocą tej konfiguracji w pliku application.conf

slick.dbs.default.driver="slick.driver.PostgresDriver$"
slick.dbs.default.db.url="jdbc:postgresql://127.0.0.1:5432/[name_db]"
slick.dbs.default.db.user=[name_db]
slick.dbs.default.db.password=[pw_bd]