事出有因:
一个正常运行的项目再次运行的时候突然报错:
Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.
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).
//无法配置数据库,没有指定url属性,并且无法配置embedded datasource
//如果如果需要加载嵌入式的数据库,请将他放入路径中**//如果有数据库设置需要从指定配置文件中加载,需要调用该配置文件(目前没有活动的配置文件)*
这是一个很经典、也很入门的初级错误,说明你的配置文件中没有数据源相关的配置,在yml或properties中引入相关配置即可,但是,话说回来,我这是一个正常运行的项目突然报错说我没有相关配置,这不科学啊。
既然出现了这个问题,有三种可能:
- 上文说的,没有配置数据源
- 数据源配置错误,可检查配置文件语法格式(yml)
- 配置文件在maven工程中属于Resource文件,那么最后一种可能就是IDEA没有识别Resource目录
我的解决方案:
首先清除IDEA的缓存,重新导入工程。
Resource右键工程,Mark Drectory as --> Resource Root
将Resource文件夹设置资源文件夹。
网上还有一种解决方案是:
Spring boot的启动引导类上增加@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}),阻止Spring boot自动注入dataSource。我认为这种方案不可取。
原因:
该注解的作用是,排除自动注入数据源的配置(取消数据库配置),不去读取数据库,也就是无法操作数据库,这种选择在微服务中,可以作为消费者的配置,消费者去调用生产者的服务,生产者去与数据库交互。当然,在单体应用、或者是微服务的生产者中,必须使用数据库、就不能使用这种方案,所以该方案有一定的局限性,不可取。
在maven打包时遇到奇奇怪怪的报错,以上解决方案可用。