Spring Boot 多数据库 (AWS Elasticbeanstalk)

问题描述 投票:0回答:1

我在 AWS ElasticbeansTalk 和两个 AWS RDS 数据库 shema 中部署了 Spring Boot 应用程序。在我的本地计算机上,两个数据库都可以工作。但是,在 elasticbeanstalk 环境中部署后,只有“crosscheckdbxr”正在工作,称为“主要”。从第二个数据库“sectiondbxr”我无法检索数据。您可以检查以下配置和建议吗?

Application.properties 配置,

spring.jpa.properties.hibernate.jdbc.time_zone=UTC
spring.jpa.generate-ddl=true
spring.db1.datasource.jdbc-url=jdbc:mysql://devdbxr.cnk8oyka2f9o.eu-central-1.rds.amazonaws.com:3306/crosscheckdbxr
spring.db1.datasource.username=admin
spring.db1.datasource.password=
spring.db1.datasource.member.driverClassName=com.mysql.cj.jdbc.Driver

spring.db2.datasource.jdbc-url=jdbc:mysql://devdbxr.cnk8oyka2f9o.eu-central-1.rds.amazonaws.com:3306/sectiondbxr
spring.db2.datasource.username=admin
spring.db2.datasource.password=
spring.db2.datasource.member.driverClassName=com.mysql.cj.jdbc.Driver

“crosscheckdbxr”的数据库配置,

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "userentityManagerFactory",
        transactionManagerRef= "usertransactionManager", basePackages = {"com.xr.crosscheck.repository.user"})
public class UserConfig {

    @Primary
    @Bean(name = "datasource")
    @ConfigurationProperties(prefix = "spring.db1.datasource")
    public DataSource dataSource(){
        return DataSourceBuilder.create().build();
    }

    @Primary
    @Bean(name = "userentityManagerFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder, @Qualifier("datasource") DataSource dataSource){
        HashMap<String,Object> properties = new HashMap<>();
        properties.put("spring.jpa.hibernate.ddl-auto", "update");
        properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
        return builder.dataSource(dataSource)
                .properties(properties)
                .packages("com.xr.crosscheck.model")
                .persistenceUnit("db1")
                .build();
    }

    @Primary
    @Bean(name = "usertransactionManager")
    public PlatformTransactionManager transactionManager(@Qualifier("userentityManagerFactory")EntityManagerFactory entityManagerFactory){
        return new JpaTransactionManager(entityManagerFactory);
    }

}

“sectiondbxr”的数据库配置,

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "sectionEntityManagerFactory",
        transactionManagerRef= "sectionTransactionManager", basePackages = {"com.xr.crosscheck.repository.section"})
public class SteelSectionConfig {


    @Bean(name = "sectionDataSource")
    @ConfigurationProperties(prefix = "spring.db2.datasource")
    public DataSource dataSource(){
        return DataSourceBuilder.create().build();
    }


    @Bean(name = "sectionEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean SectionEntityManagerFactory(EntityManagerFactoryBuilder builder, @Qualifier("sectionDataSource") DataSource dataSource){
        HashMap<String,Object> properties = new HashMap<>();
        properties.put("spring.jpa.hibernate.ddl-auto", "validate");
        properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
        return builder.dataSource(dataSource)
                .properties(properties)
                .packages("com.xr.crosscheck.model")
                .persistenceUnit("db2")
                .build();
    }


    @Bean(name = "sectionTransactionManager")
    public PlatformTransactionManager SteelTransactionManager(@Qualifier("sectionEntityManagerFactory")EntityManagerFactory SectionEntityManagerFactory){
        return new JpaTransactionManager(SectionEntityManagerFactory);
    }
}

示例存储库,

@Repository
public interface CSectionsRepository extends JpaRepository<CSections, Long> {
    @Query(value = "SELECT SECTION from sectiondbxr.C", nativeQuery = true)
    List<String> getAllColumn();

    @Query(value = "SELECT * from sectiondbxr.C u where u.section = ?1", nativeQuery = true)
    CSections findBySection(String sectionN);
}
mysql spring-boot amazon-elastic-beanstalk
1个回答
0
投票

我已经通过将数据库列标题设置为大写字母来解决。读取数据库时出现问题。用大写字母更改列标题后,数据检索工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.