新项目用的是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
我是通过修改源代码重新打包
解决问题的,可以先看能不能解决你的问题.可以解决的话,可以直接用这个包当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需要加载加载那个数据库参数了
网友评论