HTTP状态 500 - 内部服务器错误-数据库连接失败

本文针对Error querying database的异常,从mybatis配置排查入手,最终定位为数据库连接问题,并给出了具体的解决方案,包括调整mysql驱动版本及连接参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!

1.首先根据报错信息猜测是数据库或mybatis的问题

在这里插入图片描述
根据代码我就先看了mapper接口及其实现xml配置,发现接口上蓝色的小鸟不见了,只剩下xml的红色小鸟,于是我猜测是不是mybatis哪里出现了问题。找了很久感觉没什么不妥。就是这里,项目报错时接口上的蓝色小鸟就不见了,这是我最后解决问题后蓝色小鸟又回来了。在这里插入图片描述
解决问题的途中发现了spring整合的其他配置文件有点不配合,看起来是都想自立门户了。
在这里插入图片描述

2.发现mybatis看不出来什么问题后,就转移思路编写测试类看看到底能不能连接数据库。

下面是我写的测试类,发现前面获取bean都没问题,就是调用方法查询数据库出现了错误,所以定位就是数据库连接的问题
在这里插入图片描述
一方面是我的mysql版本是8.0,但是驱动却是5.几的,这个有问题,需要更改一致
另一方面8.0后配置驱动时要参考下面标准

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=UTF-8
name=root
password=password

关于数据库版本,连接用户名错误等其他异常请看我另一篇文章:https://blog.youkuaiyun.com/weixin_44580398/article/details/128330858
接下来把这块调节好后,测试类成功查询出了数据库的数据。重启服务通过前端访问也能成功
在这里插入图片描述

在这里插入图片描述

### 解决阿里云服务器 MySQL 数据库连接失败 #### 1. 检查网络连通性和端口状态 确保本地机器能够通过网络到达阿里云ECS实例,并确认MySQL默认使用的3306端口处于开放状态。可以利用命令行工具telnet测试目标IP地址加端口号的可达情况,也可以借助防火墙配置指令来添加相应规则以允许外部流量访问该端口[^4]。 ```bash # 测试到ECS实例的3306端口是否畅通 telnet <your_ecs_ip> 3306 ``` 对于CentOS/RHEL系统来说,可以通过下面这条命令永久性地向公共区域的安全策略里加入一条新的入站规则,从而让外界能顺利抵达运行于ECS之上的MySQL服务: ```bash firewall-cmd --zone=public --add-port=3306/tcp --permanent ``` 之后记得重启防火墙使更改生效: ```bash systemctl restart firewalld.service ``` #### 2. 修改MySQL用户的远程访问权限 当遇到错误码为`2003`的情况时,通常意味着客户端尝试建立TCP/IP连接至MySQL server的过程中遇到了障碍。这可能是由于未授予特定主机名或IP地址对应的账户足够的权限所致。为此,在拥有适当权限的情况下执行如下SQL语句可赋予指定用户从任意位置(`%`)发起请求的权利[^1]: ```sql GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '<password>' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 请注意替换其中的`<password>`部分为你实际想要设定的新密码。 #### 3. 调整安全组设置 除了上述措施外,还需核查所处环境下的网络安全防护机制——即所谓的“安全组”。它类似于虚拟化的硬件级防火墙,用来控制进出关联资源的数据包过滤行为。具体操作是在阿里云官网找到对应ECS实例所属的安全组页面,新增一项针对TCP协议下3306端口范围内的授权条目,允许来自所需网段(如整个互联网)的通信请求进入[^2]。 #### 4. 排除其他潜在因素 最后还应考虑是否存在性能瓶颈或是不当的应用层逻辑设计引发的问题。比如频繁的大规模读写操作可能会造成不必要的宽带消耗;又或者是应用程序内部存在缺陷性的编码模式影响到了整体交互流程等等[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来的千万富翁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值