Ошибка тайм-аута подключения mysql play-slick

Возможный дубликат: Создайте соединение MySQL в Playframework с помощью 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. Спасибо за помощь.


person Usman khan    schedule 08.12.2015    source источник


Ответы (2)


Измените slick.dbs.default.db.username на slick.dbs.default.db.user.

Пул соединений Hikari регистрирует попытки входа в систему с неправильным именем пользователя только на уровне DEBUG, в противном случае происходит сбой с тайм-аутом.

Попробуйте установить для com.zaxxer.hikari значение DEBUG в logback.xml, чтобы увидеть ошибки.

person kairius    schedule 04.12.2016

Это может быть полезно для тех, кто сталкивается с аналогичной ошибкой тайм-аута:

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

Следуя тому, что сказал @Kairius, я включил регистрацию com.zaxxer.hikari в моем файле logback.xml:

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

Я получил следующую ошибку, когда разработчики play-slick evolution попытались установить соединение при запуске моего приложения (одна из многих):

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"
person david jaramillo    schedule 01.11.2018
comment
Вы только что спасли мне жизнь, спасибо! - person Golddy; 19.02.2021