当前位置: 首页> 文旅> 旅游 > 网站排名诊断_特效素材免费网站_网站设计说明_网络推广网站公司

网站排名诊断_特效素材免费网站_网站设计说明_网络推广网站公司

时间:2025/7/12 6:49:58来源:https://blog.csdn.net/Crayon26/article/details/146248219 浏览次数:1次
网站排名诊断_特效素材免费网站_网站设计说明_网络推广网站公司

一、报错详情

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with 
name 'memoryMonitor' defined in URL [jar:file:/home/nacos/target/nacos-server.jar!/BOOT-
INF/lib/nacos-config-2.1.0.jar!/com/alibaba/nacos/config/server/monitor/MemoryMonitor.class]:Unsatisfied dependency expressed through constructor parameter 0; nested exception is
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with 
name 'asyncNotifyService': Unsatisfied dependency expressed through field 'dumpService'; 
nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'externalDumpService': Invocation of init method failed; nested exception is ErrCode:500
, ErrMsg:Nacos Server did not start because dumpservice bean construction failure :
No DataSource set
  • 核心问题:Nacos 未正确加载数据库配置
Caused by: java.lang.IllegalStateException: No DataSource set

二、原因排查

(1)两容器是否挂载在同一网络下

//查看mysql容器的具体信息
docker inspect mysql
//查看nacos容器的具体信息
docker inspect nacos
  • 若此处显示的网络相同,那么说明两容器都已成功挂载在同一网络下,也就是确保 MySQL 服务可达
    在这里插入图片描述

若显示不在同一网络下,那么就需要将 Nacos 连接到 MySQL 网络

# 创建自定义网络
docker network create nacos_network
# 将 MySQLNacos 加入同一网络
docker network connect nacos_network mysql
docker network connect nacos_network nacos

(2)检查防火墙是否关闭,以及端口是否正常开放

  • 要想保证两容器能正常相连,那么需要保证此时的防火墙是已经关闭的
//检查防火墙状态
systemctl status firewalld
//关闭防火墙
systemctl stop firewalld
//开启防火墙
systemctl start firewalld
①检查mysql与nacos是否连接上各自的端口
//检查mysql是否连接上3306端口
sudo lsof -i :3306
//检查nacos是否连接上8848端口
sudo lsof -i :8848

查看输出结果中的 PID(进程ID) 或服务名称,确定是哪个进程/服务占用了端口。

②检查虚拟机是否开放mysql与nacos的端口
//是否开放mysql的3306端口
sudo firewall-cmd --list-all | grep 3306
//是否开放nacos的8848端口
sudo firewall-cmd --list-all | grep 8848

如果输出中包含 3306/tcp(或8848/tcp),表示端口已放行;若无结果,则未放行。

③放行3306 端口
# iptables
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
sudo service iptables save && sudo service iptables restart# firewalld
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload# ufw
sudo ufw allow 3306/tcp
sudo ufw reload

(3)Nacos容器启动优先级高于Mysql(重点错误原因!!)

由于nacos会先于mysql启动,而nacos又设置了持久化在mysql中,如果mysql没启动,nacos就会报错找不到数据源。所以需要先启动mysql容器再重启nacos容器,具体解决办法如下:

  1. 在启动虚拟机后,nacos报错,mysql不报错,使用datagrip等客户端都能正常连接至mysql,那么说明问题出现在nacos上。
    在这里插入图片描述
  2. 检查nacos是否在mysql中实现持久化
    在这里插入图片描述
    像这样绑定好了nacos登录的账号与密码就是已经持久化
  3. 解决办法:在确保虚拟机中防火墙已关闭以及mysql容器已启动的情况下,重启Nacos容器。
//查看全部容器的状态
docker ps -a
//重启nacos容器
docker stop nacos
docker start nacos
//进入nacos日志,查看是否正常启动
docker logs -f nacos
  • 看到successfully则是已经成功启动Nacos
    在这里插入图片描述
关键字:网站排名诊断_特效素材免费网站_网站设计说明_网络推广网站公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: