Слик 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 в качестве плагина. Пожалуйста, посмотрите образцы воспроизведения.