mysql - Play Framework Scala 2.8x 的 Hikaripool 连接超时捕获异常
问题描述
我是使用 Play Framework 进行 Scala 开发的超级新手。我正在使用 Scala 和 Play Framework 2.8x 构建一个项目,我正在尝试连接到 MYSQL 数据库。
我现在已经花了几天的时间试图找出问题所在,而在线答案对我没有帮助。
但是,我尝试关注这个线程:Steps needed to use MySQL database with Play framework 2.0
这是我的 application.conf 文件数据库设置
play.db {
config = "db"
default = "MyDB"
}
#Database config
db {
MyDB.driver="com.mysql.jdbc.Driver"
MyDB.url="jdbc:mysql://127.0.0.1:3306/MyDB?characterEncoding=UTF-8&autoReconnect=true&useSSL=false"
MyDB.username="root"
MyDB.password="password"
MyDB.hikaricp {
connectionTimeout = 60 seconds
validationTimeout = 5 seconds
maxLifetime = 60 minutes
}
}
# db connections = ((physical_core_count * 2) + effective_spindle_count)
fixedConnectionPool = 9
database.dispatcher {
executor = "thread-pool-executor"
throughput = 1
thread-pool-executor {
fixed-pool-size = ${fixedConnectionPool}
}
}
这是我的模型代码:
class MyDatabase @Inject() (@NamedDatabase("MyDB") db: Database, databaseExecutionContext: DatabaseExecutionContext) {
def read(query: String) = {
Future {
// get jdbc connection
try {
val connection = db.getConnection()
val statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)
val data = statement.executeQuery("SELECT * FROM User")
while (data.next()) {
System.out.print("Data: " + data.getString("username"))
// System.out.print("")
}
// remember to close the connection
connection.close()
data
}
catch {
case exception: Exception => System.out.print("Error: " + exception.getMessage())
}
}(databaseExecutionContext)
}
问题是我从带有Hikaripool 连接超时请求的 catch 方法中得到一个异常
--- (RELOAD) ---
2021-03-24 18:45:07 INFO play.api.db.HikariCPConnectionPool Shutting down connection pool.
2021-03-24 18:45:09 INFO play.api.db.DefaultDBApi Database [MyDB] initialized
2021-03-24 18:45:09 INFO play.api.db.HikariCPConnectionPool Creating Pool for datasource 'MyDB'
2021-03-24 18:45:09 INFO play.api.http.EnabledFilters Enabled Filters (see <https://www.playframework.com/documentation/latest/Filters>):
play.filters.csrf.CSRFFilter
play.filters.headers.SecurityHeadersFilter
play.filters.hosts.AllowedHostsFilter
2021-03-24 18:45:09 INFO play.api.Play Application started (Dev) (no global state)
Error: HikariPool-15 - Connection is not available, request timed out after 60001ms.
您的帮助将不胜感激!
解决方案
推荐阅读
- jquery - Laravel 5.8 多张图片上传
- sql - 如何在 PowerShell 中运行多个 SQL 查询“加载本地 infile”?
- java - Android 如何让从 firebase 数据库加载数据与 orderByChild() & startAt() & limitToFirst() 结合使用?
- javascript - 当我刷新不同的路由路径时,Firebase 身份验证会重置
- javascript - 无法在 jQuery 函数中返回 $.posted php 文件数据
- jquery - 如何使用 Squelize 修复 RAW 查询
- arrays - autohotkey array null ...你如何检查数组是否为空/空?
- javascript - Javascript regex 查找除 html 标签内的文本之外的所有内容,并排除一些标签
- git - 如何在不合并的情况下将来自另一个分支的特定文件添加到我的分支?
- angular - 是否可以在模式中使用 loginPopup() 身份验证流程?