【已解决】Linux上的Tomcat项目无法访问数据库,但是位于Windows上的完全一样项目却可以,报错的异常为:org.springframework.web.util.NestedServlet

Linux上的Tomcat项目访问数据库报错,但是位于Windows上的完全一样项目却可以访问并成功显示数据


当我开启了端口,如果有经历过的小伙伴看到这个3306端口,就已经知道我错在哪了
在这里插入图片描述
这是我连接数据库的配置文件:WindosLinux都是一样的配置,MySQL连接驱动采用5.1.47

jdbc_driver=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://192.168.1.12:3306/manong_mall?serverTimezone=GMT&useSSL=false&useUnicode=true&characterEncoding=utf-8
jdbc_user=root
jdbc_password=123456

位于Linux上部署的web项目却无法访问数据库,报了这种异常:

在这里插入图片描述

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: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 6014, active 0, maxActive 20, creating 0, createErrorCount 175
### The error may exist in com/migu/mapper/ProductCategoryMapper.xml
### The error may involve com.migu.mapper.ProductCategoryMapper.selectByExample
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 6014, active 0, maxActive 20, creating 0, createErrorCount 175

JDBC连接池好像出现了什么问题,我的是使用的SSM web项目,采用的是alibaba druid的连接池

以下为排查过程

1、首先再次尝试是否开启了远程访问


命令:每次进行权限设置时都要set以下这两个玩意

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
# 接收任意主机,密码为123456
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION
# 这步不要忘记
mysql> FLUSH PRIVILEGES;

但是结果依然不行

2、判断是否是连接池问题


JDBC连接池好像出现了什么问题,我的是使用的SSM web项目,采用的是alibaba druid的连接池

上面报的是连接池问题,所以我首先想到的更改连接池,这次我使用c3p0,TMD依然错,配置就不列出来了

3、判断是否是数据库问题


再次尝试使用winodws上的navicat访问部署在linux上的数据库,也是成功连接

在这里插入图片描述
那么这种情况数据库和连接池都是没问题的

网上找了很多文档资料博客,这篇文章跟我问题类似,但还是不行,小伙伴们可以尝试一下博客

4、怀疑是版本冲突,此时我就重新安装tomcat和java


分别尝试下载了不同版本,分别尝试了各种方式什么使用解压缩安装啦或者yum安装啦

配置了很多环境变量,都还是一样的问题,最后就排除了版本冲突的问题

5、最后我就更换了个MySQL的监听地址,结果成功


原先的MySQL服务所监听的地址为:

在这里插入图片描述
此时我前往my.cnf配置文件,更改监听地址为:

#开启监听指定地址
bind-address=192.168.1.12 # 这是我当前虚拟机的地址

CentOS7重启服务命令:

[root@localhost bin]# systemctl restart mysqld

最后为:
在这里插入图片描述

大概过程就是这样了,此时访问虚拟机上的web项目是可以成功返回数据的【具体原因暂未知】
在这里插入图片描述
希望这篇文章对你有帮助!!!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值