小编cli*_*x85的帖子

Spring初始化多个数据库

我正在使用 AbstractRoutingDatasource 在运行时在数据库之间进行路由。在informix 数据库的实际情况下,一切正常。

对于测试,我创建了一个 spring 配置文件以在内存 H2 数据库中使用。在运行带有测试配置文件的 spring 应用程序后,我使用 h2 控制台检查了本地数据库。没有创建架构。

我尝试在资源和休眠中使用 schema.sql:

generate-ddl: true
hibernate:
  ddl-auto: create-drop
Run Code Online (Sandbox Code Playgroud)

休眠抛出

java.lang.IllegalStateException: Cannot determine target DataSource for lookup key [null]
Run Code Online (Sandbox Code Playgroud)

据我了解,hibernate 试图仅生成“路由”数据源。由于没有设置 DatabaseContextHolder (null),因此失败。

所以两种方式都失败了。

有没有办法用(相同的)模式初始化所有数据库?

我在下面列出了我的配置。

引导程序.yml:

spring:
  profiles: acceptanceTest
  config:
    name: standalone
  cloud:
    config:
      enabled: false
      discovery:
        enabled: false
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    generate-ddl: true
    hibernate:
      ddl-auto: create-drop
    properties:
      hibernate:
        show_sql: false
        use_sql_comments: false
        format_sql: false
  h2:
    console:
      enabled: true
      path: /h2
datasource:
  mc:
    driver-class-name: 'org.h2.Driver'
    url: 'jdbc:h2:mem:test-mc-db;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE'
    username: …
Run Code Online (Sandbox Code Playgroud)

java database spring hibernate spring-boot

5
推荐指数
1
解决办法
1857
查看次数

标签 统计

database ×1

hibernate ×1

java ×1

spring ×1

spring-boot ×1