Play 框架 java 连接无法用于 sql 服务器数据库

Play framework java connection is not available to sql server database

从我的 java 项目(播放框架)连接到 Azure 中的 sql 服务器数据库时,我遇到了问题。

在本地环境中,连接工作正常。

我的 application.conf 中的参数以下:

db.default {
     url="jdbc:sqlserver://server-name.database.windows.net:1433;database=database-name"
     encrypt=true
     trustServerCertificate=false
     hostNameInCertificate="*.database.windows.net"
     loginTimeout=30
     driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
     username="root"
     password="RootPwd"
}

这是收到的错误:

ERROR o.h.e.jdbc.spi.SqlExceptionHelper HikariPool-1 - Connection is not available, request timed out after 30006ms. ERROR o.h.e.jdbc.spi.SqlExceptionHelper The TCP/IP connection to the host par-sql-server.database.windows.net, port 1433 has failed. Error: "par-sql-server.database.windows.net. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.". ERROR p.api.http.DefaultHttpErrorHandler

play.api.PlayException: Execution exception[[CompletionException: org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection]] at play.api.http.HttpErrorHandlerExceptions$.$anonfun$convertToPlayException(HttpErrorHandler.scala:388) at scala.Option.getOrElse(Option.scala:201) at play.api.http.HttpErrorHandlerExceptions$.convertToPlayException(HttpErrorHandler.scala:388) at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:373) at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:264) at play.core.server.AkkaHttp

我已经检查过 tcp/ip 端口 1433 对数据库正确可用,并且我的 ip 设置正确以避开防火墙。

有什么建议吗? 谢谢

通常当数据库未在默认连接超时内获得连接时会发生此错误 属性。

您可以尝试在 Java 配置中增加 connectionTimeout 的值,如下所示:

config.setConnectionTimeout(300000);

下面是示例配置之一:

HikariConfig config = new HikariConfig();
        config.setMaximumPoolSize(20);
        config.setConnectionTimeout(300000);
        config.setConnectionTimeout(120000);
        config.setLeakDetectionThreshold(300000);

如果可能,让我知道重现此问题的步骤,以便我可以相应地修复它,同时根据您提供的信息,这些博客 (Blog1, Blog2) 将帮助您建立连接