Error updating database. Cause: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communication

背景:重启了mysql
原因:数据库连接的属性 testOnBorrow设置为false(默认设置为false) testOnBorrow=false由于不检测池里连接的可用性,于是假如连接池中的连接被数据库关闭了,应用通过连接池getConnection时,都可能获取到这些不可用的连接,且这些连接如果不被其他线程回收的话,它们不会被连接池被废除,也不会重新被创建,占用了连接池的名额,项目本身作为服务端,数据库链接被关闭,客户端调用服务端就会出现大量的timeout,客户端设置了超时时间,然而主动断开,服务端必然出现close_wait。
解决方法:mysql 5版本之前,可以使用autoReconnect=true
其他版本:test-on-borrow = true

你可能感兴趣的:(java,mysql)