解决Spring Cloud Alibaba Nacos No

2023-05-04  本文已影响0人  伐无道

新项目用的是Nacos这套东西,细节有点坑.

动不动就报No DataSource Set,明明数据库连接信息没有任何问题,话不多说
一共就2步:

1.确认自己的jdbc连接是否正确,有没有加时区

#这是我的配置
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456

2.下载zip包重新运行nacos

重新打包后的zip压缩包GItHub地址

我是通过修改源代码重新打包解决问题的,可以先看能不能解决你的问题.可以解决的话,可以直接用这个包当server,也可以走第三步第四步自己编译

3.自己编译源代码

注意:确定上面github下载的压缩包能够解决你的问题,可以直接使用该包,也可以按照下面重新打包
注意:确定上面github下载的压缩包能够解决你的问题,可以直接使用该包,也可以按照下面重新打包
注意:确定上面github下载的压缩包能够解决你的问题,可以直接使用该包,也可以按照下面重新打包

可以的话,点个赞呗

入口:
com.alibaba.nacos.config.server.service.datasource.ExternalDataSourceServiceImpl#init()

在init方法中追加代码

            if(Objects.isNull(jt.getDataSource())){
            jt.setDataSource(dataSourceList.get(0));
            }

如下图


image.png

4.重新打包即可
进入nacos根目录,执行maven命令

mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U

新打的包在 distribution/target里面用新的就没问题了

原因猜测:

Nacos里面配置了多个JdbcTemplate,有可能某些配置导致Nacos误以为我们是多个数据库,所以有部分JdbcTemplate Bean没有设置数据源,报No DataSource Set.

注意: 如果真的用了多个数据源的话就需要判断jdbcTemplate需要加载加载那个数据库参数了

上一篇 下一篇

猜你喜欢

热点阅读