Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the

自己搭了一个项目,启动过程中各种错误,其中这个错误浪费了好长时间,特此记录一下这个问题,详细报错如下:

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).

这个问题折腾了一早上,终于解决了。执行了clean,install以后都不报错,重新启动项目就会报上面的错误。按照报错信息百度了好多方法,走了很多弯路还是都没有解决。最终想起来之前的项目报错的一个信息,感觉可能会从那里入手,最终成功解决。分享一下我的解决过程:
1:首先检查yml或者properties中的配置,
2:在启动类中加上@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)。不过这个貌似起不到什么作用,大家试一下还是不行就不要再这里浪费时间了。具体原因可以看下面第二种解决方式。
3:结束java进程,重新启动
4:从pom文件入手。
第一种:首先我的yml文件中数据库配置是对着的,我使用的是mybatisplus,mysql版本是8.0.31
yml中数据库配置:
注意datasource的目录级别是spring下面一级
在这里插入图片描述

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://ip+端口+库名?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
    username: 
    password:

数据库版本:
在这里插入图片描述
pom依赖:
在这里插入图片描述

  <!--数据库链接驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>

        <!--jdbc依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>

        <!--mybatis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>
        <!--mybatis-plus代码生成相关依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.0</version>
        </dependency>

以上就是项目中的数据库相关的依赖和yml中数据库的配置,确定yml中的配置没有语法错误或者参数错误,pom文件也没有错以后。
接着我尝试第二种解决方法:项目启动的时候,没有找到dataSource相关的配置信息,所以当spring创建dataSource bean时因为缺少dataSource相关的配置信息就会报错。所以我在启动类上加上这一行代码

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

该注解的作用是,排除自动注入数据源的配置(取消数据库配置),在springBoot中使用多数据源时,加上@SpringBootApplication(exclude={DataSourceAutoConfiguration.calss})。
DataSourceAutoConfiguration.class会自动去application.yml或者properties文件里找spring.datasource相关的信息并自动配置单数据源
DataSourceAutoConfiguration.class默认会帮我们自动配置单数据源,所以,如果想在项目中使用多数据源就需要排除它,手动指定多数据源。
但是我这里就一个数据源,并且加上以后重新启动项目,发现还是报错。个人觉得可能当项目中存在多个数据源的时候,可以尝试在启动类的注解上加上这一段代码,试一下。
接着第三种:结束java进程,我试了 还是不行。
最后第四种:执行了claen,install以后,我发现在生成的 target 文件中没有找到在resources 中编写的的配置文件 application.yml
在这里插入图片描述

于是我在pom文件中添加一下配置:

<bulid>
<resources>
	 <resource>
          <directory>src/main/resources</directory><!--yml所在目录-->
          <includes>
              <include>**/*.yml</include>
          </includes>
          <filtering>false</filtering>
	</resource>
    </resources>
</bulid>

这里的作用是在build项目时,关闭对某些资源的过滤,从而防止资源导出失败。其中关闭了对yml文件的过滤,如果还需要保留其他的文件可以通过include进行添加。添加完以后需要再次刷新一下maven,不然可能不会生效。
然后再重新clean,install以后,打开target
在这里插入图片描述
然后从新启动项目,就可以了~
在这里插入图片描述
这就是我解决这个错误的所有方式和过程,最终成功启动项目。以上描述有误的地方欢迎大家指正,也希望大家能评论出自己解决这个错误的方法让更多的小伙伴受益,免走弯路。有问题可加v 876942434, 大家一起进步~

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值