CannotGetJdbcConnectionException异常Cannot create PoolableConnectionFactory

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'admin'@'localhost' (using password: YES))
### The error may exist in file [D:\apache-tomcat-9.0.2\webapps\ROOT\WEB-INF\classes\mapper\MiAuthIdStackMapper.xml]
### The error may involve bt.com.mi.mapper.MiAuthIdStackMapper.selectByPage
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'admin'@'localhost' (using password: YES))



1、出现这个错误,检查连接信息是否正确,检查url、username、password等内容
2、如果都保证正确,再检查jar包是否正确
3、我试了上面两个,都没有问题但还是不行,继续检查
我用了DBCP连接池,代码没啥问题,不过也展示一下吧

<!-- 1.配置数据库相关参数properties的属性:${url} -->
    <context:property-placeholder location="classpath:jdbc.properties" />

    <!-- 2.数据库连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <!-- 初始化连接大小 -->
        <property name="initialSize" value="${initialSize}"></property>
        <!-- 连接池最大数量 -->
        <property name="maxActive" value="${maxActive}"></property>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle" value="${maxIdle}"></property>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="${minIdle}"></property>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="${maxWait}"></property>

        <!-- 验证连接是否有效。此参数必须设置为非空字符串,下面三项设置成true才能生效 -->
        <property name="validationQuery" value="SELECT 1"></property>
        <!-- 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除. -->
        <property name="testWhileIdle" value="true"></property>
        <!--  指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个-->
        <property name="testOnBorrow" value="true"></property>
        <!-- 指明是否在归还到池中前进行检验-->
        <property name="testOnReturn" value="false"></property>
    </bean>

问题就在于引入jdbc.properties 文件。排查问题的时候可以直接在spring文件中写连接属性,如果可以连接,基本就怀疑引入问题了

最终解决办法

<!-- 引入配置文件 -->
    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:jdbc.properties" />
    </bean>
发布了97 篇原创文章 · 获赞 46 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/u013513053/article/details/104376497