这是我的 jdbc 属性(使用com.mchange.v2.c3p0.ComboPooledDataSource
):
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://myserveraddress:3306/mydatabasename?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
jdbc.username=myusername
jdbc.password=mypassword
当myserveraddress
是localhost
或我的本地IP地址
时,一切正常:)
但是,当myserveraddress
是我的服务器IP地址
(在LAN之外)时,就会出现异常:(
Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
Caused by: java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResourcePool@6c4f5d64 -- timeout at awaitAvailable()
其实我已经通过cmd、HeidiSQL、IntelliJ IDEA测试了服务器地址,一切正常……
cmd ping and cmd mysql connection is ok
HeidiSQL connection and IntelliJ IDEA mysql connection test is ok
很困惑,感谢您的帮助
最佳答案
首先检查您的端口(3306)是否在此网页上打开http://portchecker.co/ (从外部,路由器可能会阻止您的端口进行传入连接),如果没有:
-在路由器上进行端口转发
或者
-将您的服务器置于路由器上的 DMZ
关于java - spring jdbc连接远程mysql失败,而localhost正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38922527/