org.springframework.dao.DataAccessResourceFailureException

user1232138:

我收到以下错误

Exception in thread "main" org.springframework.dao.DataAccessResourceFailureException: Error retrieving database metadata; nested exception is org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Client does not support authentication protocol requested by server; consider upgrading MySQL client)
    at org.springframework.jdbc.core.metadata.TableMetaDataProviderFactory.createMetaDataProvider(TableMetaDataProviderFactory.java:103)
    at org.springframework.jdbc.core.metadata.TableMetaDataContext.processMetaData(TableMetaDataContext.java:205)
    at org.springframework.jdbc.core.simple.AbstractJdbcInsert.compileInternal(AbstractJdbcInsert.java:276)
    at org.springframework.jdbc.core.simple.AbstractJdbcInsert.compile(AbstractJdbcInsert.java:263)
    at org.springframework.jdbc.core.simple.AbstractJdbcInsert.checkCompiled(AbstractJdbcInsert.java:309)
    at org.springframework.jdbc.core.simple.AbstractJdbcInsert.doExecuteAndReturnKey(AbstractJdbcInsert.java:369)
    at org.springframework.jdbc.core.simple.SimpleJdbcInsert.executeAndReturnKey(SimpleJdbcInsert.java:133)
    at sample.spring.chapter07.bankapp.dao.BankAccountDaoImpl.createBankAccount(BankAccountDaoImpl.java:35)
    at sample.spring.chapter07.bankapp.service.BankAccountServiceImpl.createBankAccount(BankAccountServiceImpl.java:17)
    at sample.spring.chapter07.bankapp.BankApp.main(BankApp.java:28)
Caused by: org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Client does not support authentication protocol requested by server; consider upgrading MySQL client)
    at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:293)
    at org.springframework.jdbc.core.metadata.TableMetaDataProviderFactory.createMetaDataProvider(TableMetaDataProviderFactory.java:63)
    ... 9 more

当我尝试执行以下主文件时

package sample.spring.chapter07.bankapp;

import java.util.Date;

import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import sample.spring.chapter07.bankapp.domain.BankAccountDetails;
import sample.spring.chapter07.bankapp.domain.FixedDepositDetails;
import sample.spring.chapter07.bankapp.service.BankAccountService;
import sample.spring.chapter07.bankapp.service.FixedDepositService;

public class BankApp {
    private static Logger logger = Logger.getLogger(BankApp.class);

    public static void main(String args[]) throws Exception {
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "classpath:META-INF/spring/applicationContext.xml");

        BankAccountService bankAccountService = context
                .getBean(BankAccountService.class);
        BankAccountDetails bankAccountDetails = new BankAccountDetails();
        bankAccountDetails.setBalanceAmount(1000);
        bankAccountDetails.setLastTransactionTimestamp(new Date());

        int bankAccountId = bankAccountService
                .createBankAccount(bankAccountDetails);

        logger.info("Created bank account with id - " + bankAccountId);

        FixedDepositService fixedDepositService = context
                .getBean(FixedDepositService.class);

        FixedDepositDetails fdd = new FixedDepositDetails();
        fdd.setActive("Y");
        fdd.setBankAccountId(bankAccountId);
        fdd.setFdCreationDate(new Date());
        fdd.setFdAmount(500);
        fdd.setTenure(12);
        int fixedDepositId = fixedDepositService.createFixedDeposit(fdd);
        logger.info("Created fixed deposit with id - " + fixedDepositId);

        logger.info(fixedDepositService.getFixedDeposit(fixedDepositId));
    }
}

这是应用程序上下文文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
               xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.2.xsd  http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/jee
               http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
        ">

    <context:component-scan base-package="sample.spring.chapter07.bankapp" />

    <context:property-placeholder
        location="classpath*:META-INF/spring/database.properties" />

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <bean id="namedJdbcTemplate"
        class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
        <constructor-arg index="0" ref="dataSource" />
    </bean>

    <bean class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" id="dataSource">
        <property name="driverClassName" value="${database.driverClassName}" />
        <property name="url" value="${database.url}" />
        <property name="username" value="${database.username}" />
        <property name="password" value="${database.password}" />
    </bean>

    <tx:annotation-driven transaction-manager="txManager" />

    <bean id="txManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

</beans>

这是database.properties文件

database.driverClassName=com.mysql.jdbc.Driver
database.url=jdbc\:mysql\://localhost\:3306/spring_bank_app_db
database.username=root
database.password=root

此代码有什么问题?

阿尼什·B:

您正在使用旧版本的MySQL-与安装的MySQL服务器不兼容的JDBC jar版本。将jar升级到最新版本(8.x.x)。

如果您使用的是Maven,则将依赖项添加到pom.xml

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.x.x</version>
</dependency>

或从此处下载jar

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

进口org.springframework解决不了的

org.springframework.dao.InvalidDataAccessApiUsageException:没有为SQL参数提供值

错误[org.springframework.web.servlet.DispatcherServlet]

org.springframework.beans.factory.BeanCreationException问题

org.springframework.mail的哪个工件?

“导入org.springframework无法解析。”

org.springframework.dao.DataIntegrityViolationException错误报告原因?

ClassNotFoundException:org.springframework.jdbc.datasource.DriverManagerDataSource

如何在org.springframework.dao.DataIntegrityViolationException中获取约束名称?

在DAO层之外使用@ org.springframework.transaction.annotation.Transactional?

导入org.springframework.security无法解析

使用hibernate和spring-boot-data-jpa将spring-boot从2.1.x更新到2.2.x之后,org.springframework.dao.DataIntegrityViolationException

重写RestController方法后,我得到:org.springframework.dao.InvalidDataAccessApiUsageException:给定的id不能为null

org.springframework.beans.NotReadablePropertyException:-下拉表单

org.springframework.dao.InvalidDataAccessApiUsageException:分离的实体传递给持久化:

如何避免org.springframework.transaction.UnexpectedRollbackException?

请求处理失败;嵌套的异常是org.springframework.dao.DataIntegrityViolationException:无法执行语句;

缺少类org.springframework.objenesis.ObjenesisStd

使用@Query注释时的异常-“ org.springframework.dao.InvalidDataAccessApiUsageException:声明性查询方法是一个要做的事情”

格式错误:org.springframework.dao.EmptyResultDataAccessException:错误的结果大小:预期为1,实际为0

当其子实体由其唯一字段之一初始化时,保存实体会引发org.springframework.dao.InvalidDataAccessApiUsageException

org.springframework.jdbc.CannotGetJdbcConnectionException

org.springframework.web.servlet.DispatcherServlet noHandlerFound

春季安全性:java.lang.ClassNotFoundException:org.springframework.dao.support.DaoSupport

org.springframework.batch.item.file.FlatFileParseException:

org.springframework.beans.NotReadablePropertyException:

Hibernate/JPA - 保存/插入函数失败 org.springframework.dao.InvalidDataAccessResourceUsageException: 无法提取 ResultSet;SQL [不适用];

错误:方法抛出“org.springframework.dao.InvalidDataAccessResourceUsageException”异常

org.springframework.dao.IncorrectResultSizeDataAccessException Mongo Limit 不起作用?