【问题标题】:Slick MSSQL "Failed to create Slick database config for key default"Slick MSSQL“无法为密钥默认创建 Slick 数据库配置”
【发布时间】:2016-04-17 22:31:08
【问题描述】:

我无法使用 Slick 连接到我们的 MSSQL 数据库。

我知道我必须使用 Slick Extensions 并且已经这样做了。这是我们构建的摘录

lazy val thirdPartyDependencies = Seq(
    ...
    "com.typesafe.slick"    %% "slick-extensions"             % "3.1.0",
    "com.typesafe.play"     %% "play-slick"                   % "1.1.0",
    "com.typesafe.slick"    %% "slick-codegen"                % "3.1.0" % "compile"
)

lazy val allResolvers = Seq(
  "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/",
  "sonatype-releases" at "https://oss.sonatype.org/content/repositories/releases/",
  "Typesafe Releases" at "http://repo.typesafe.com/typesafe/maven-releases/"
)

这是 Slick 的 application.conf 配置

#Slick configuration.
slick.dbs.default.driver=com.typesafe.slick.driver.ms.SQLServerDriver
slick.dbs.default.db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
slick.dbs.default.db.url=${?db.default.url}
slick.dbs.default.db.user=${?sql_user}
slick.dbs.default.db.password=${?sql_password}

我使用SourceCodeGenerator 工具构建了表定义,没有任何问题。下面是连接数据库的代码:

val dbConfig = DatabaseConfigProvider.get[JdbcProfile](Play.current)

我没有任何编译时问题,但在运行代码时遇到了以下堆栈跟踪:

[error] play.api.db.slick.DefaultSlickApi - Failed to create Slick database config for key default.
slick.SlickException: Error getting instance of Slick driver "com.typesafe.slick.driver.ms.SQLServerDriver"
       at slick.backend.DatabaseConfig$.forConfig(DatabaseConfig.scala:65) ~[slick_2.11-3.1.0.jar:na]
       at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.create(SlickApi.scala:89) [play-slick_2.11-1.1.0.jar:1.1.0]
       ...
Caused by: java.lang.InstantiationException: com.typesafe.slick.driver.ms.SQLServerDriver
       at java.lang.Class.newInstance(Class.java:427) ~[na:1.8.0_45]
       at slick.backend.DatabaseConfig$.forConfig(DatabaseConfig.scala:63) ~[slick_2.11-3.1.0.jar:na]
       ... 22 common frames omitted
 Caused by: java.lang.NoSuchMethodException: com.typesafe.slick.driver.ms.SQLServerDriver.<init>()
       at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_45]
       at java.lang.Class.newInstance(Class.java:412) ~[na:1.8.0_45]
       ... 23 common frames omitted

我对 Slick 完全陌生。我们有商业类型安全许可证,所以我认为我们可能应该使用其中提供的一些巧妙功能。感谢您的帮助。

【问题讨论】:

  • 这似乎 Slick 找不到您的 MSSQL 数据驱动程序。

标签: sql-server scala playframework slick


【解决方案1】:

您的application.conf 配置文件有问题。尝试在驱动程序名称的末尾添加一个尾随 $ 以告诉 Slick 将其称为对象:

slick.dbs.default.driver = "com.typesafe.slick.driver.ms.SQLServerDriver$"

请阅读this SO post了解更多信息。

【讨论】:

    猜你喜欢
    • 2019-04-24
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    相关资源
    最近更新 更多