最近在项目中遇到 C3P0 连接池时 IDEA 报 TimeoutException,记一次排查过程,希望对大家有帮助,过程如下:
首先,看 mysql 服务是否正常。先重启 mysql 服务,发现项目还是报错。而 navicat 连接数据库正常,shell 连接数据库也正常,证明不是 mysql 的问题。
然后,在网上查各种博客,网上各种博客解决该问题的方法有两种:(1)调小 c3p0 链接池最大连接数大小 (2)调大 c3p0 链接池的超时时间。经排查,项目中的连接数大小和超时时间均在各种博客的建议范围内,无果。
最后,无奈之下,干脆写了个原生的 jdbc 代码试试,结果 jdbc 代码报 ssl 错误,终于定位到问题所在:由于我本地更新了 jdk ,1.8 高版本的 jdk 在连接数据库时会使用 ssl 连接。有两种解决办法:(1)在连接串中添加参数 useSSL=false (2)修改 java.security 配置。最终选择第二种解决办法。具体操作如下:
(1)找到 java.security 文件。mac电脑在:/Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home/jre/lib/security/java.security
(2)修改jdk.tls.disabledAlgorithms配置项,删除 SSLv3, TLSv1, TLSv1.1
删除前: