首页 > 解决方案 > 如何在 Slick 中为 MySQL 连接设置 socketTimeout?

问题描述

HikariCP 在 Slick 3 库中用于连接池的配置。

根据HikariCP Rapid-Recovery,为了能够“从数据库重启或网络分区事件中恢复”,建议将socketTimeout 设置为默认禁用。

问题是如何在 slick 中设置 socketTimeout?

标签: scalaslickhikaricp

解决方案


在 application.conf 添加 socketTimeout 作为 JDBC URL 的一部分

db {
  profile = "slick.jdbc.MySQLProfile$"
  db {
    url = "jdbc:mysql://localhost:3306/dbname?socketTimeout=30000"
    driver = com.mysql.cj.jdbc.Driver
    user = "<user>"
    password = "<password>"
  }
}

来自MySQL Connector/J 8.0 文档

可以通过以下方式之一设置配置属性:

  • 在 jdbc url java.sql.DataSource 的 MySQL 实现上使用 set*() 方法(这是使用 java.sql.DataSource 实现时的首选方法)
  • 作为 java.util.Properties 实例中的键值对传递给 DriverManager.getConnection() 或 Driver.connect()
  • 作为 URL 中的 JDBC URL 参数

推荐阅读