报错如下
2019-08-21 12:44:53 [WARN]: HikariPool-1 - Failed to validate connection com.mysql.jdbc.JDBC4Connection@83b51b8 (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value. 2019-08-21 12:44:58 [WARN]: HikariPool-1 - Failed to validate connection com.mysql.jdbc.JDBC4Connection@4933c203 (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value. 2019-08-21 12:45:03 [WARN]: HikariPool-1 - Failed to validate connection com.mysql.jdbc.JDBC4Connection@679ffe26 (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value.
已经根据提示在网上找了相关的设置,但仍没有效果
HikariCpPlugin hp = getHikariCpPlugin(); /** * 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟。 * 强烈建议设置比数据库超时时长少30秒,(MySQL的wait_timeout参数(单位s),show variables like ‘%timeout%’,一般为8小时) * 计算公式: (wait_timeout-30)*1000 */ hp.setMaxLifetime(28700000L); me.add(hp); ActiveRecordPlugin arp = new ActiveRecordPlugin(hp); arp.getEngine().setDevMode(prop.getBoolean("devMode", false)); arp.setShowSql(prop.getBoolean("devMode", false)); arp.setTransactionLevel(Connection.TRANSACTION_READ_COMMITTED); arp.addSqlTemplate("/sql/_all.sql"); me.add(arp);
查询了数据库的wait_timeout值为28800,按照网上修改建议设置了仍没有效果,谁知道这个如何解决吗?
项目:JFinal
而你设置的值太大了
这个可能还不是关键问题,或许是你自己有代码提前关闭了 Connection
搜索一下你的代码有没有这种 getConnection(), 如果是自行获取连接,建议: getDataSource().getConnection() , 这样更安全,因为前者你获取到的可能是一个 ThreadLocal 中的连接,如果你开启了事务,线程后续还需要使用该 ThreadLocal 就会有问题
不过这个可能性很小,因为这种情况大概率会报异常而不是警告