当前位置: 首页 > 知识库问答 >
问题:

未指定url属性,无法配置嵌入式数据源

越嘉石
2023-03-14

我正在尝试实现使用2个数据库的Spring应用程序。我尝试了这个:

应用属性

spring.production.datasource.url=jdbc:mariadb://localhost:3306/production_gateway
spring.production.datasource.username=wildfly
spring.production.datasource.password=qwerty
spring.production.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.production.datasource.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
spring.production.datasource.jpa.show-sql = true
spring.production.datasource.jpa.hibernate.ddl-auto = update

spring.warehouse.datasource.url=jdbc:mariadb://localhost:3306/production_warehouse
spring.warehouse.datasource.username=wildfly
spring.warehouse.datasource.password=qwerty
spring.warehouse.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.warehouse.datasource.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
spring.warehouse.datasource.jpa.show-sql = true
spring.warehouse.datasource.jpa.hibernate.ddl-auto = update

配置Bean:

@Configuration
@EnableJpaRepositories(
        basePackages = "org.plugin.production.service", 
        entityManagerFactoryRef = "productionEntityManagerFactory", 
        transactionManagerRef = "productionTransactionManager"
    )
@EnableTransactionManagement
public class ContextProductionDatasource {

    @Autowired
    private Environment env;

    @Primary
    @Bean(name = "productionDataSourceProperties")
    @ConfigurationProperties(prefix="spring.production.datasource")
    public LocalContainerEntityManagerFactoryBean userEntityManager() {
        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(userDataSource());
        em.setPackagesToScan(new String[] { "org.plugin.production.service" });

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);
        HashMap<String, Object> properties = new HashMap<>();
        properties.put("hibernate.hbm2ddl.auto", env.getProperty("jpa.hibernate.ddl-auto"));
        properties.put("hibernate.dialect", env.getProperty("jpa.properties.hibernate.dialect"));
        em.setJpaPropertyMap(properties);

        return em;
    }

    @Primary
    @Bean(name = "productionDataSourceProperties")
    @ConfigurationProperties(prefix="spring.production.datasource")
    public DataSource userDataSource()
    {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
        dataSource.setUrl(env.getProperty("datasource.url"));
        dataSource.setUsername(env.getProperty("username"));
        dataSource.setPassword(env.getProperty("password"));

        return dataSource;
    }

    @Primary
    @Bean(name = "productionTransactionManager")
    @ConfigurationProperties("spring.production.datasource")
    public PlatformTransactionManager productionTransactionManager(final EntityManagerFactory emf) {
        final JpaTransactionManager transactionManager = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(emf);
        return transactionManager;
    }

    @Primary
    @Bean(name = "productionExceptionTranslation")
    @ConfigurationProperties("spring.production.datasource")
    public PersistenceExceptionTranslationPostProcessor productionExceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }
}

但是当我启动应用程序时,我收到错误:

***************************
APPLICATION FAILED TO START
***************************

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

你知道我如何解决这个问题吗?

共有1个答案

邴姚石
2023-03-14

请排除DataSourceAutoConfiguration.class:

  @SpringBootApplication(exclude = {
    DataSourceAutoConfiguration.class})
 类似资料:
  • 我正在使用MongoDB开发一个Spring Boot批处理示例,并且我已经启动了服务器。 当我启动我的应用程序时,我得到下面的错误。 对这个问题有什么建议吗? 应用特性: pom.xml 我用以下输出启动了:

  • 我已经检查了所有类似的问题,每个答案都说我需要指定一个driverClassName,我已经这样做了。这是我的申请表。yml: 我错过了什么吗?奇怪的是,我的一个有相同代码的同学可以很好地启动应用程序。这就是为什么我认为这与路径有关。也许Spring没有访问yml文件。我把它包含在src.main.resources中,这是Spring查找它的默认位置。这是堆栈跟踪: 这是Gradle构建,我被要

  • 一直致力于使用Spring开发微服务。我已经成功地写了几个,但是,最后一个失败了,我不知道为什么。 我的申请。属性: (别担心,密码包含在application.properties) 已尝试添加和删除: Spring自动配置。排除=组织。springframework。靴子自动配置。jdbc。数据源自动配置 我的pom。xml 我的主要: @SpringBootApplication公共类Aut

  • 编辑问题以包括所需的行为、特定问题或错误,以及再现问题所需的最短代码。这将帮助其他人回答这个问题。 我的application.properties是: 当我进行maven Build并尝试运行主SpringBoot类时,我收到以下消息:

  • 我在pom下面有这个。xml文件。我在尝试运行应用程序时收到此错误消息。未能配置数据源:“url”属性未指定,无法配置嵌入式数据源。 我在谷歌上搜索过,很少有人说这个问题不应该出现在内存数据库版本中,比如H2、Derby等。然而,我遇到了这个问题。 尝试更新application.properties 和 但是没有喘息的机会。请让我知道我错过了什么/在哪里。

  • 我的spring boot项目不需要datasource配置,但当我运行它时,出现了错误: 申请启动失败 描述:配置数据源失败:未指定“url”属性,无法配置嵌入式数据源。 原因:无法确定合适的驱动程序类别 行动: 考虑以下内容:如果您想要一个嵌入式数据库(H2、HSQL或Derby),请将其放在类路径上。如果您有要从特定配置文件加载的数据库设置,您可能需要激活它(当前没有活动的配置文件) 我的a