【Bug解决】Failed to configure a DataSource

文章讲述了SpringBoot项目在启动时遇到的DataSource配置错误,主要关注url属性未指定的问题,分析了原因并提供了两种解决方案:排除自动配置类和设置数据源属性值。
摘要由CSDN通过智能技术生成

1、问题描述

SpringBoot项目在启动时报出下面的错误:

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class

Action:

Consider the following:

If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.

If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

说明:

未能配置DataSource:未指定“url”特性,也无法配置任何嵌入的数据源。

原因:无法确定合适的驱动程序类别

操作:

考虑以下内容:

如果您想要一个嵌入式数据库(H2、HSQL或Derby),请将其放在类路径中。

如果您有要从特定配置文件加载的数据库设置,则可能需要激活它(当前没有激活的配置文件)。

2、问题分析

  • 从报错信息中,可看到是未能配置DataSource:未指定“url”特性,也无法配置任何嵌入的数据源。换句话说,我们没有配置DataSource(数据源)的url属性值。
  • 那在什么情况下会要求我们配置数据源的url属性呢? 在触发加载数据源的自动配置类时需要配置相关属性。
  • 因为通常情况下,是在yml文件中配置数据源相关内容,通过这种方式我们可以知道,数据源的配置是由SpringBoot实现了自动配置的。通常是因为我们引入了mybatis-spring-boot-starter启动器等一类与数据源连接相关的依赖,触发了数据源创建对应的自动配置类。
  • 所以,解决方案有两种,一是不让SpringBoot创建数据源的自动配置类;二是给数据源自动配置类的属性赋值。

3、问题解决

  • 第一种情况:不加载数据源的自动配置类,适用于不连接相关的数据库。只需要在启动类上使用自动配置的注解EnableAutoConfiguration将自动配置类DataSourceAutoConfiguration.class排除。

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

  • 第二种情况,给数据源配置上对应的属性值,用于自动配置类的属性值使用。

说明:如果是第二种情况,重点应该放在排查是否有配置数据源(datasource)相关的属性值,或者配置了属性值为什么没有生效。 比如使用Nacos配置中心时,datasource相关的属性是否生效了。

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值