程序员往往都是先将代码编写完毕后自己先测试一遍,测试通过后才会找前端一起联调。今天这个问题就是出现在自我调试的过程中,记录并分享给大家。
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