解決多數據源配置問題

        程序員往往都是先將代碼編寫完畢後自己先測試一遍,測試通過後纔會找前端一起聯調。今天這個問題就是出現在自我調試的過程中,記錄並分享給大家。

 

一.啓動註冊中心並註冊服務

1.啓動註冊中心

 

2.註冊服務

 

3.驗證服務是否註冊成功

 

 

二、測試接口

測試接口:http://localhost:4102/dataset/data-set/add

頁面以及控制檯報錯:

Creating a new SqlSession
Registering transaction synchronization for SqlSession [[email protected]]
JDBC Connection [[email protected]] will be managed by Spring
==>  Preparing: INSERT INTO DSE_BASE_INFO ( ID, DATA_SET_NAME, DATA_SOURCE_ID, DATA_SOURCE_NAME, REMARK, DELETE_STATUS, CREATE_USER, CREATE_TIME, UPDATE_USER, UPDATE_TIME, CREATE_VIEW_SQL, VIEW_NAME, CATALOG_ID, CATALOG_NAME ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
Releasing transactional SqlSession [[email protected]]
Transaction synchronization deregistering SqlSession [[email protected]]
Transaction synchronization closing SqlSession [[email protected]]
2020-06-24 09:52:45,461|ERROR|hdmp_app_web-api,,,|http-nio-4102-exec-2|c.h.i.f.w.c.ControllerBase:136|未知錯誤,錯誤類型:org.springframework.jdbc.BadSqlGrammarException: 
### Error updating database.  Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "DSE_BASE_INFO" not found; SQL statement:
 

出現問題:Table "DSE_BASE_INFO" not found,找不到這個表。

1.首先查看數據庫是否有這張表。

數據庫的確是有這張表的,那麼查看數據庫配置

2.查看數據庫配置

<1>.首先查看application.yml

發現裏面配置的active:local

<2>.查看applicaiton-local.yml

發現配置文件全是是放在apollo上的,數據源連接名字叫做data-datasourse

3.查看Apollo上的數據源連接

 <1>.在項目文件下找到dataa-datasource

點開查看dataa-datasource果然就是數據庫連接

<2>.查看數據庫連接

        數據源1:

        數據源2:

        數據源3:

這時候我找到了之前爲什麼報找不到表的原因,springBootApplication默認不開啓多數據源支持

 

3.解決方案

<1>.啓動類上夾DruidDataSourceAutoConfigure.class

@SpringBootApplication(
        scanBasePackages = "com.hikcreate.business.dataa.service.dataset"
        ,exclude = {DruidDataSourceAutoConfigure.class}
)
@MapperScan(basePackages = "com.hikcreate.business.dataa.service.dataset.infra.data.mapper")
@EnableFeignClients(basePackages = "com.hikcreate.business.dataa.service.dataset.infra.data.feign")
@EnableDiscoveryClient
public class DataSetApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(DataSetApiApplication.class, args);
    }

}

<2>.pom.xml添加苞米豆依賴使mybatis-plus支持多數據源

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.1.0</version>
</dependency>

4.驗證

 

這時候就已經解決掉了多數據源的問題了。

 

三、總結

        在開發中可能會遇到多數據源的數據庫連接,記住處理口訣:

         

        啓動注入杜蘭德,依賴引進苞米豆。

    DruidDataSourceAutoConfigure  +   baomidou