新項目用的是Nacos這套東西,細(xì)節(jié)有點坑.
動不動就報No DataSource Set,明明數(shù)據(jù)庫連接信息沒有任何問題,話不多說
一共就2步:
1.確認(rèn)自己的jdbc連接是否正確,有沒有加時區(qū)
#這是我的配置
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
我是通過修改源代碼重新打包解決問題的,可以先看能不能解決你的問題.可以解決的話,可以直接用這個包當(dāng)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.重新打包即可
進(jìn)入nacos根目錄,執(zhí)行maven命令
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
新打的包在 distribution/target里面用新的就沒問題了
原因猜測:
Nacos里面配置了多個JdbcTemplate,有可能某些配置導(dǎo)致Nacos誤以為我們是多個數(shù)據(jù)庫,所以有部分JdbcTemplate Bean沒有設(shè)置數(shù)據(jù)源,報No DataSource Set.
注意: 如果真的用了多個數(shù)據(jù)源的話就需要判斷jdbcTemplate需要加載加載那個數(shù)據(jù)庫參數(shù)了