首页 > 数据库 >01 springboot集成mybatis后数据库连接失败

01 springboot集成mybatis后数据库连接失败

时间:2024-11-03 15:20:08浏览次数:5  
标签:mapper 01 springboot jdbc mp mybatis org 连接 ###

springboot集成mybatis后数据库连接失败

问题描述:

1.datasource配置:

//application.yaml
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 040224
logging:
  level:
    com.itheima: debug
  pattern:
    dateformat: HH:mm:ss
mybatis:
  mapper-locations: classpath*:mapper/*.xml

2.报错信息

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
### The error may exist in file [F:\Java_Projects\Mybatis\mp-demo\target\classes\mapper\UserMapper.xml]
### The error may involve com.itheima.mp.mapper.UserMapper.queryUserById
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

翻译:
org.mybatis.spring.MyBatisSystemException: 
嵌套异常是 org.apache.ibatis.exceptions.PersistenceException: 
### 查询数据库时出错。原因:org.springframework.jdbc.CannotGetJdbcConnectionException: 无法获得JDBC连接;
嵌套异常是 java.sql.SQLNonTransientConnectionException: 无法创建到数据库服务器的连接。尝试重新连接3次。放弃。
### 错误可能存在于文件 [F:\Java_Projects\Mybatis\mp-demo\target\classes\mapper\UserMapper.xml]
### 错误可能涉及 com.itheima.mp.mapper.UserMapper.queryUserById
### 错误发生在执行查询时
### 原因:org.springframework.jdbc.CannotGetJdbcConnectionException: 无法获得JDBC连接;
嵌套异常是 java.sql.SQLNonTransientConnectionException: 无法创建到数据库服务器的连接。尝试重新连接3次。放弃。

翻译大致意思是尝试连接数据库三次后失败。

故障排查

1.检查数据库是否正常启动?

2.是否是密码错误?

3.是否是pom引入的各种依赖的版本存在冲突或存在过高、过低的问题?

经检查pom引入的各种依赖的版本导入正常且版本不存在冲突或存在过高、过低的问题。

4.是否为数据源文件application.yaml的配置存在问题?

经检查,数据源文件配置无误,一切正常。

经分析后,发现代码没有问题,出问题的应该还是数据库连接的地方。

断点调试

我们找一个测试方法启动,然后打断点进行调试:

目前一切正常,我们进入下一步。

目前仍然正常,我们继续进行下一步。

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
### The error may exist in file [F:\Java_Projects\Mybatis\mp-demo\target\classes\mapper\UserMapper.xml]
### The error may involve com.itheima.mp.mapper.UserMapper.queryUserById
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

翻译:
org.mybatis.spring.MyBatisSystemException: 
嵌套异常是 org.apache.ibatis.exceptions.PersistenceException: 
### 查询数据库时出错。原因:org.springframework.jdbc.CannotGetJdbcConnectionException: 无法获得JDBC连接;
嵌套异常是 java.sql.SQLNonTransientConnectionException: 无法创建到数据库服务器的连接。尝试重新连接3次。放弃。
### 错误可能存在于文件 [F:\Java_Projects\Mybatis\mp-demo\target\classes\mapper\UserMapper.xml]
### 错误可能涉及 com.itheima.mp.mapper.UserMapper.queryUserById
### 错误发生在执行查询时
### 原因:org.springframework.jdbc.CannotGetJdbcConnectionException: 无法获得JDBC连接;
嵌套异常是 java.sql.SQLNonTransientConnectionException: 无法创建到数据库服务器的连接。尝试重新连接3次。放弃。

此时,仍然报错。我们刚才其实有注意到,在我们执行下述语句时,是先有application is running弹出,后续才出现报错。

User user = userMapper.queryUserById(5L);

我们不妨大胆猜测一下,我们的application.yaml文件存在我们不知道的问题。

我们先跟进username的源码然后打断点。此时可以看到是一切正常的。

那么我们再对passoword的源码打断点。

此时我们注意到,密码居然不是我们设置的040224,而是16532,难道是我们漏了某个地方吗?

我们先修改密码,改成12345后再次尝试。

密码又正常了回到我们设置的密码,难道和密码位数有关,只能设置五位以内的位数吗?

我们尝试将密码修改为123456,再次尝试。

一切正常,那么我们再将密码修改为012345,再次尝试。

显然,密码又不正常了,难道密码不能以0数字开头?

查阅相关资料后,发现

yaml文件读取数字属性时先转化成Integer类型,如果需要的是String类型的数据,再将Integer类型转换成String类型的数据。

故障解决

yaml文件读取数字属性时先转化成Integer类型,如果需要的是String类型的数据,再将Integer类型转换成String类型的数据。

既然如此,我们尝试在密码两边加上""

显然,程序运行正常,故障解决。

故障总结

yaml文件读取数字属性时先转化成Integer类型,如果需要的是String类型的数据,再将Integer类型转换成String类型的数据。

因此,我们需要尽力避免使用0开头的数字作为配置信息。或者将0开头数字两边加上""使其视为字符串。

标签:mapper,01,springboot,jdbc,mp,mybatis,org,连接,###
From: https://blog.csdn.net/wgy17734894660/article/details/143380281

相关文章

  • Springboot高校学生奖、助学金管理系统t0v2u
    Springboot高校学生奖、助学金管理系统t0v2u本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表 项目功能:学生,奖助学金,奖助学金申请,贫困生申请,奖助学金发放,工作类型,勤工助学岗位,岗位申请开题报告内容一......
  • 【软考】系统架构设计师-2011年下半年上午综合知识真题及答案
    全国计算机技术与软件专业技术资格(水平)考试高级系统架构设计师2011年下半年上午试卷 综合知识试题一 操作系统为用户提供了两类接口:操作一级和程序控制一级的接口,以下不属于操作一级的接口是( )。A.操作控制命令  B.系统调用  C.菜单 D.窗口试题二 (第......
  • Springboot计算机毕业设计后勤采购系统lgp7y
    Springboot计算机毕业设计后勤采购系统lgp7y本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:采购人员,供应商,材料管理员,材料信息,材料类型,采购订单,订单采购开题报告内容一、项目背景与意义在......
  • 基于SpringBoot的宠物健康咨询系统的设计与实现
    摘   要传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,宠物健康知识信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大用户的需求,因此就应运而生出相应的宠物健康......
  • Springboot固体垃圾智能9c0nc
    Springboot固体垃圾智能9c0nc本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:用户,垃圾分类,垃圾信息,站点信息,社区管理员,回收预约,回收订单,变更申请,新条形码,情况登记,用户反馈,奖惩登记开题报......
  • Springboot计算机毕业设计核酸检测预约系统uj1di
    Springboot计算机毕业设计核酸检测预约系统uj1di本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:用户,医院信息,检测机构,医生,核检预约,核检报告,取消预约,疫情数据,疫情资讯,关于我们,值班医生开......
  • 4.1 MyBatis 分页插件
    分页查询基本上是必备的能力,MyBaits可以通过插件来很好的支持分页查询,目前最成熟的方案是pagehelper这个第三方插件。我们只需要在工程的pom.xml里添加如下的依赖即可,目前最新的版本是1.2.13<dependency><groupId>com.github.pagehelper</groupId><artifactId>page......
  • 提升教育质量:SpringBoot在线试题库系统
    2相关技术2.1SpringBoot框架简介SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用......
  • SpringBoot技术栈:在线试题库系统深度开发
    摘要使用旧方法对作业管理信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在作业管理信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的精品在线试题库系统有管理员,教师,学生三个角色。管理......
  • 技术驱动教育:SpringBoot在线试题库解决方案
    1绪论1.1研究背景现在大家正处于互联网加的时代,这个时代它就是一个信息内容无比丰富,信息处理与管理变得越加高效的网络化的时代,这个时代让大家的生活不仅变得更加地便利化,也让时间变得更加地宝贵化,因为每天的每分钟,每秒钟这些时间都能让人们处理大批量的日常事务,这些场......