Caused by: java.sql.SQLNonTransientConnectionException: Data source rejected
根据工作要求在GitHub上拉取一个项目在本地运行的时候遇到了一些问题,一开始控制台报GetConnectionTimeoutException: wait millis 7001, active 0, maxActive 500, creating 0。
看到控制台报的错误信息是说数据库连接池的问题。于是在博客找到是数据库连接池溢出问题,程序在运行时申请的连接没有关闭,造成了连接泄露。比如:
Connection connection=jdbcTemplate.getDataSource().getConnection();
这样得到的连接spring不会再帮你关闭,你需要手动关闭。
需要添加druid的连接回收机制。
#超过时间限制是否回收
spring.datasource.druid.removeAbandoned = true
#超时时间;单位为秒。180秒=3分钟
spring.datasource.druid.removeAbandonedTimeout = 180
#关闭abanded连接时输出错误日志
spring.datasource.druid.logAbandoned = true
修改druid配置信息后,发现还是报错,各种一大堆,然后又仔细看了一下所有错误信息,发现不是一样的信息。
java.sql.SQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"
控制台报错信息为数据库连接数的问题,一时想不到解决方法就直接重启数据库,再次运行项目跑起来,各个页面都可以正常展示,功能都正常。我navicat连接数据库修改了一些数据后,再次访问页面又出现数据库连接数的问题了,然后在博客园找到了可以通过修改数据库的最大连接数来解决。
1、按win+R输入“cmd”,回车进入dos窗口
2、输入“mysql -uroot -p”,回车输入密码进入mysql
3、查看mysql连接数输入:show variables like ‘max_connections’;
4、修改连接数输入:set global max_connections=1000;
修改数据库最大连接数后前面的问题就全部解决了。
参考文献:
连接池溢出:https://blog.csdn.net/u014644574/article/details/112257795
数据库连接数修改:https://www.cnblogs.com/zscwb/p/12751133.html