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