spring boot 的Cannot determine embedded datab_专家答疑-阿里云Spring Cloud Alibaba官网
铭师堂的云原生升级实践点此了解

spring boot 的Cannot determine embedded datab

发布时间 2024-09-26


用户问题 :

spring boot 的Cannot determine embedded database driver class for database type NONE 产生原因


专家官方解答 :

在Spring Cloud Alibaba项目中遇到Cannot determine embedded database driver class for database type NONE错误,其产生原因及解决步骤如下:

原因分析:

  1. 未使用DataSource却引入相关依赖:你的应用实际上并未配置或使用数据库连接,但却在项目的pom.xml中包含了spring-boot-starter-jdbc依赖。这导致Spring Boot在启动时尝试自动配置数据源。

  2. 自动配置冲突:由于spring-boot-starter-jdbc引入了tomcat-jdbc库,其中包含了org.apache.tomcat.jdbc.pool.DataSource的实现。Spring Boot的自动配置机制会在类路径下检测到这个实现类,并尝试根据配置创建数据源Bean。

  3. 缺少必要配置:因为你的应用缺少数据库URL等相关配置,Spring Boot在尝试通过JDBC URL推断数据库驱动类时失败,从而抛出该异常。

解决方案:

方法一:移除不必要的依赖

  • 步骤:检查并从你的pom.xml文件中移除spring-boot-starter-jdbc依赖,如果确实不需要使用数据库连接功能的话。
<!-- 在pom.xml中移除如下依赖 -->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency> -->

方法二:禁用DataSource自动配置

  • 步骤1:在启动类上添加@SpringBootApplication注解的exclude属性,以排除数据源的自动配置。
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class
})
public class YourApplication {
public static void main(String[] args) {
SpringApplication.run(YourApplication.class, args);
}
}
  • 步骤2(可选):或者,在application.propertiesapplication.yml中配置以排除数据源自动配置。
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration

解释:

以上步骤旨在解决由不必要或不当配置引起的自动配置冲突。通过移除未使用的依赖或明确禁用特定的自动配置项,可以避免Spring Boot在启动过程中尝试创建不必要的数据源实例,从而消除该错误。选择适合你项目实际情况的方法进行调整即可。

---------------

参考链接 :

  • 专家经验:怎样排查 Cannot determine embedded database driver class for database type NONE

---------------

答疑服务说明:

本内容经由技术专家审阅的用户问答的镜像生成,我们提供了专家智能答疑服务,使用方法: 用法1: 在页面的右下的浮窗”专家答疑“。 用法2: 点击专家答疑页(针对部分网站不支持插件嵌入的情况)

另:

有其他开源产品的使用问题?点击访问阿里AI专家答疑服务

反馈

如问答有错漏,欢迎点:差评给我们反馈。