01 springboot集成mybatis后密码正确但数据库连接失败

news2025/3/1 6:53:08

01 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类型,对于Integer类型数字来说,0开头的数字则被解析为八进制,因此会导致密码错误。

故障解决

由于yaml文件读取数字属性时先转化成Integer类型,转换时导致密码被解析错误,因此我们尝试在密码两边加上"",使其被视为字符串,不被转换。

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

故障总结

yaml文件读取数字属性时先转化成Integer类型,但是对于Integer类型数字来说,0开头的数字则被解析为八进制,这也导致在连接数据库时密码错误而连接不上数据库。

同样的,还有0x开头的数字会被解析为十六进制。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python基于jieba和wordcloud绘制词云图

【Cesium】自定义材质,添加带有方向的滚动路线 🍖 前言🎶一、实现过程✨二、代码展示🏀三、运行结果🏆四、知识点提示 🍖 前言 Python基于jieba和wordcloud绘制词云图 🎶一、实现过程 读取文本…

保证Mysql数据库到ES的数据一致性的解决方案

文章目录 1.业务场景介绍1.1 需求分析1.2 技术实现方案 2.业界常用数据一致性方案分析2.1 同步双写方案2.2 MQ异步双写方案2.3 扫表定期同步方案2.4 监听binlog同步方案 1.业务场景介绍 1.1 需求分析 某知名的在线旅游平台,在即将到来的春季促销活动之前&#xff…

文件搜索工具Everything

软件介绍 Everything 是一款运行于 Windows 系统的轻量级、高效的文件搜索工具 软件功能 1、基本搜索 在搜索框输入关键词,即可快速找到包含该关键词的文件和文件夹。 2、高级搜索 支持多种高级搜索语法,如.exe:可只返回特定扩展名的结果…

【面试题】技术场景 6、Java 生产环境 bug 排查

生产环境 bug 排查思路 分析日志:首先通过分析日志查看是否存在错误信息,利用之前讲过的 elk 及查看日志的命令缩小查找错误范围,方便定位问题。远程 debug 适用环境:一般公司正式生产环境不允许远程 debug,多在测试环…

【UE5 C++课程系列笔记】25——多线程基础——FGraphEventRef的简单使用

目录 概念 使用示例1 使用示例2 概念 FGraphEventRef 本质上是对一个异步任务或者一组相关异步任务在虚幻引擎任务图系统中的一种引用(reference)。虚幻引擎的任务图系统用于高效地调度和管理各种异步任务,协调它们的执行顺序以及处理任务…

DeepSeek:性能强劲的开源模型

deepseek 全新系列模型 DeepSeek-V3 首个版本上线并同步开源。登录官网 chat.deepseek.com 即可与最新版 V3 模型对话。 性能对齐海外领军闭源模型​ DeepSeek-V3 为自研 MoE 模型,671B 参数,激活 37B,在 14.8T token 上进行了预训练。 论…

使用 SQL 和表格数据进行问答和 RAG(1)—数据库准备

一. 从 .sql/csv/xlsx 文件创建 sqlite 数据库。 要从.sql文件准备 SQL DB,这里会将创建数据库的代码放到了,将文件复制到data/sql目录中,然后在终端中的项目文件夹中执行: pip install sqlite3现在创建一个名为sqldb的数据库&a…

用否定法去跳脱圈层

在这个充满竞争和诱惑的时代,许多人发现自己被困在了一个看似舒适却实则束缚重重的圈层之中。这个圈层,可能是由底层人的思维惯性、不良习惯、无谓消费、攀比心理等构成的。要真正实现自我提升,跳出这个圈层,就需要我们运用否定法…

C++类的引入

C中类的前身 1> 面向对象三大特征:封装、继承、多态 2> 封装:将能够实现某一事物的所有万事万物都封装到一起,包括成员属性(成员变量),行为(功能函数)都封装在一起&#xff…

Postman配置环境变量

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 Postman是一套比较方便的接口测试工具,但我们在使用过程中,可能会出现创建了API请求,但API的URL会随着服务器IP地址的变化而改…

新能源网站提升用户体验的关键

新能源网站的用户体验对于吸引和留住访问者至关重要。一个优秀的用户体验可以增加用户的满意度,提高他们对网站的忠诚度。在设计新能源网站时,关键在于简洁明了的界面和易于导航的布局。用户应该能够轻松找到他们需要的信息,而不会感到困惑或…

【Unity3D日常开发】Unity3D中适用WEBGL打开Window文件对话框打开/上传文件

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群:398291828小红书小破站 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 Unity3D发布的WEBGL程序是不支持直接的I/O操…

ElasticSearch内存占用率过高怎么办?

文章目录 1,先用top看看各个进程的内存占用情况2,不能简单的杀死进程,然后再重启。3,查看一下ElasticSearch进程的具体启动情况4,修改Elasticsearch 的Java堆内存 1,先用top看看各个进程的内存占用情况 先…

DC/AC并网逆变器模型与仿真MATLAB

DC/AC并网逆变器是一种将直流电(DC)转化为交流电(AC),并将其与电网并联的设备。它的核心功能是实现直流电源(如光伏电池板或储能电池)与电网的有效连接,同时保证输出电能质量满足电网…

Flink三种集群部署模型

这里写自定义目录标题 Flink 集群剖析Flink 应用程序执行Flink Session 集群(Session Mode)Flink Job 集群(以前称为per-job)Flink Application 集群(Application Mode) 参考 Flink 集群剖析 Flink 运行时…

JVM实战—12.OOM的定位和解决

大纲 1.如何对系统的OOM异常进行监控和报警 2.如何在JVM内存溢出时自动dump内存快照 3.Metaspace区域内存溢出时应如何解决(OutOfMemoryError: Metaspace) 4.JVM栈内存溢出时应如何解决(StackOverflowError) 5.JVM堆内存溢出时应该如何解决(OutOfMemoryError: Java heap s…

一文读懂「LoRA」:大型语言模型的低秩适应

LoRA: Low-Rank Adaptation of Large Language Models 前言 LoRA作为大模型的微调框架十分实用,在LoRA出现以前本人都是通过手动修改参数、优化器或者层数来“炼丹”的,具有极大的盲目性,但是LoRA技术能够快速微调参数,如果LoRA…

IT面试求职系列主题-人工智能(一)

想成功求职,必要的IT技能一样不能少,再从人工智能基础知识来一波吧。 1)您对人工智能的理解是什么? 人工智能是计算机科学技术,强调创造能够模仿人类行为的智能机器。这里智能机器可以定义为能够像人一样行动、像人一…

浏览器报错:您的连接不是私密连接,Kubernetes Dashboard无法打开

问题描述 部署完成Kubernetes Dashboard后,打开HTTPS的web页面,Chrome和Edge浏览器都无法正常加载页面,会提示您的连接不是私密连接的报错。 ​​​​​​​​​​​​ 原因: 浏览器不信任这些自签名的ssl证书,为了…

【Unity插件】解决移动端UI安全区问题 - Safe Area Helper

在移动端设计界面时,必须要考虑的就是UI的安全区。 Unity本身也提供了Safearea的API。 但在asset store时已经有人提供了免费的插件(Safe Area Helper),我们可以直接使用。 插件链接: https://assetstore.unity.com/p…