文件

§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 存取您的資料庫


在此文件找到錯誤?此頁面的原始程式碼可以在 這裡 找到。閱讀 文件指南 後,請隨時貢獻一個 pull request。有問題或建議要分享嗎?前往 我們的社群論壇 與社群展開對話。