Слик 3, конфигурация ProvisionException при подключении к базе данных

Я новичок в Slick и использую версию 3.1.1 вместе с Playframework 2.4.6 . Я следую этому руководству в документации http://slick.typesafe.com/doc/3.1.1/database.html. Я получаю ошибку

***ProvisionException: Unable to provision, see the following errors:

1) Error injecting constructor, java.lang.RuntimeException: java.lang.ClassNotFoundException: 
org.postgresql.ds.PGSimpleDataSource
  at controllers.Application.<init>(Application.scala:12)
  while locating controllers.Application
    for parameter 1 at router.Routes.<init>(Routes.scala:31)
  while locating router.Routes
  while locating play.api.inject.RoutesProvider
  while locating play.api.routing.Router
1 error***

Это то, что я сначала в SBT поставил

libraryDependencies ++= Seq(
  "com.typesafe.slick" %% "slick" % "3.1.1",
  "org.slf4j" % "slf4j-nop" % "1.6.4"
)

Затем в моем Application.Conf я положил это

mydb = {
  dataSourceClass = org.postgresql.ds.PGSimpleDataSource
  properties = {
    databaseName = "mydatabasename"
    user = "postgres"
    password = "mypassword"
  }
  numThreads = 10
}

Тогда, наконец, в моем контроллере у меня просто есть контроллеры пакетов строки подключения

import javax.sql.DataSource

import org.mindrot.jbcrypt.BCrypt
import play.api._
import play.api.mvc._
import slick.driver.PostgresDriver.api._
import scala.concurrent.ExecutionContext.Implicits.global


class Application extends Controller {

  val db = Database.forConfig("mydb")
  try {
    // ...
  } finally db.close()




  def index = Action {

    Ok("My First Controller")
  }

}

Как видите, я поставил драйвер postgres вместо H2, так как я работаю с postgres, и эти учетные данные являются правильными и проверенными.

1 ответ

Решение

Вам нужно добавить зависимости от драйверов slick-hikaricp и postgresql в build.sbt.

   "com.typesafe.slick" %% "slick-hikaricp" % "3.1.1",
   "org.postgresql" % "postgresql" % "9.4-1206-jdbc4"

Если вы новичок в Slick, я хотел бы предложить вам использовать Slick в качестве плагина. Пожалуйста, посмотрите образцы воспроизведения.

Другие вопросы по тегам