Mysql play-slick 连接超时错误

Posted

技术标签:

【中文标题】Mysql play-slick 连接超时错误【英文标题】:Mysql play-slick connection timeout error 【发布时间】:2015-12-08 09:31:01 【问题描述】:

可能重复:Create a mysql connection in Playframework with slick

我正在使用 play-slick 插件尝试连接 mysql 数据库。但是每次 slick 尝试与 Db 通信时,我都会收到连接超时错误。我的 application.conf 文件如下:

slick.dbs.default.driver= "slick.driver.MySQLDriver$"
slick.dbs.default.db.dataSourceClass = "slick.jdbc.DatabaseUrlDataSource"
slick.dbs.default.db.properties.driver = "com.mysql.jdbc.Driver"
slick.dbs.default.db.url="jdbc:mysql://127.0.0.1:3306"
slick.dbs.default.db.username="root"
slick.dbs.default.db.password="xxxx"
slick.dbs.default.db.connectionTimeout=15s
slick.dbs.default.db.numThreads = 12
slick.dbs.default.db.connectionTestQuery="select 1"

每当我的应用程序尝试与数据库通信时,都会出现以下错误:

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[SQLTimeoutException: Timeout after 15001ms of waiting for a connection.]]
    at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:265) ~[play_2.11-2.4.3.jar:2.4.3]

我检查了 mysql 正在侦听端口 3306。有一个服务 mysqld 正在运行。感谢您的帮助。

【问题讨论】:

【参考方案1】:

slick.dbs.default.db.username 更改为 slick.dbs.default.db.user

Hikari 连接池仅在 DEBUG 级别记录错误的用户名登录尝试,否则失败并静默超时。

尝试在 logback.xml 中将 com.zaxxer.hikari 设置为 DEBUG 以查看错误。

【讨论】:

【参考方案2】:

这可能对遇到类似超时错误的人有所帮助:

[SQLTransientConnectionException: db - Connection is not available, request timed out after 1000ms.]

按照@Kairius 所说,我在我的 logback.xml 文件中启用了 com.zaxxer.hikari 日志记录:

<logger name="com.zaxxer.hikari" level="DEBUG" />

当 play-slick evolutions 尝试在我的应用启动时(其中之一)建立连接时,我收到以下错误:

java.sql.SQLException: The server time zone value 'COT' is unrecognized or
represents more than one time zone.

我通过在我的连接字符串中添加?serverTimezone=UTC 来解决这个问题,如下所示:

 slick.dbs.default 
  profile = "slick.jdbc.MySQLProfile$"
  db 
    driver = com.mysql.cj.jdbc.Driver
    url = "jdbc:mysql://localhost:3306/eventos?serverTimezone=UTC"
    user =root
    password =root
  

我使用 MySQL 8.0.13,这些是我的 sbt 依赖项:

libraryDependencies += "com.typesafe.play" %% "play-slick" % "3.0.1"
libraryDependencies += "com.typesafe.play" %% "play-slick-evolutions" % "3.0.1"
libraryDependencies += "mysql" % "mysql-connector-java" % "8.0.13"

【讨论】:

以上是关于Mysql play-slick 连接超时错误的主要内容,如果未能解决你的问题,请参考以下文章

mysql连接超时的问题

mysql链接超时错误

C3p0连接mysql,超时问题

连接节点 v5.10.1 时握手不活动超时错误。到 aws mysql RDS

mysql的连接超时设置

mysql怎么设置超时时间