文档

§Play Slick 常见问题解答

§我应该使用哪个版本?

请查看 兼容性矩阵 以了解您应该使用哪个版本。

§play.db.pool 被忽略

确实如此。更改 play.db.pool 的值不会影响 Slick 将使用的连接池。原因很简单,Play Slick 模块目前不支持使用与 HikariCP 不同的连接池。

§更改 Slick 使用的连接池

虽然 Slick 允许使用与 HikariCP 不同的连接池(但是,Slick 目前只为 HikariCP 提供内置支持,如果您想使用其他连接池,则需要提供 JdbcDataSourceFactory 的实现),Play Slick 目前不允许使用与 HikariCP 不同的连接池。如果您发现自己需要此功能,可以尝试在 Play 讨论论坛 中给我们留言。

§已配置到 play.api.db.DBApi 的绑定

如果您在启动 Play 应用程序时遇到以下异常

1) A binding to play.api.db.DBApi was already configured at play.api.db.slick.evolutions.EvolutionsModule.bindings:
Binding(interface play.api.db.DBApi to ConstructionTarget(class play.api.db.slick.evolutions.internal.DBApiAdapter) in interface javax.inject.Singleton).
 at play.api.db.DBModule.bindings(DBModule.scala:25):
Binding(interface play.api.db.DBApi to ProviderConstructionTarget(class play.api.db.DBApiProvider))

您很可能已启用 jdbc 插件,如果您使用 Slick 访问数据库,这实际上没有意义。要解决此问题,只需从项目的构建中删除 Play 的 *jdbc* 组件。

另一种可能性是,另一个 Play 模块正在将DBApi绑定到其他具体实现。这意味着您仍然尝试将 Play Slick 与另一个用于数据库访问的 Play 模块一起使用,这可能不是您想要的。

§Play 抛出 java.lang.ClassNotFoundException: org.h2.tools.Server

如果您在启动 Play 应用程序时遇到以下异常

java.lang.ClassNotFoundException: org.h2.tools.Server
        at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        ...

这意味着您正在尝试使用 H2 数据库,但忘记在项目的构建中添加对它的依赖项。解决问题很简单,只需在项目的构建中添加缺少的依赖项,例如:

"com.h2database" % "h2" % "${H2_VERSION}" // replace `${H2_VERSION}` with an actual version number

下一步:使用 Anorm 访问您的数据库


发现此文档中的错误?此页面的源代码可以在此处找到。阅读完文档指南后,请随时贡献拉取请求。有疑问或建议要分享?转到我们的社区论坛,与社区开始对话。