Проблема со встроенной БД postgres, доступной только для чтения, с использованием весенней загрузки и миграций пролетного пути

Пример использования Я пытаюсь использовать в своем приложении 2 источника данных. Один для подключения только для чтения, а другой для подключения для чтения и записи.

Конфигурация Я настроил свои репозитории JPA для использования разных подключений. В моем случае с ИТ у меня есть следующая конфигурация в моемapplication.yaml

spring:
  datasource:
    url: jdbc:postgresql://127.0.0.1:5432/app
    username: postgres
    password:
  jpa:
    show-sql: false
    properties:
      hibernate:
        dialect: org.hibernate.dialect.PostgreSQL95Dialect
        jdbc:
          lob:
            non_contextual_creation: true

Проблема в локальной сборке

Когда я запускаю тест на своем локальном компьютере, тест не проходит при попытке создать readOnlyDataSource с ошибкой

Caused by: org.postgresql.util.PSQLException: FATAL: database "app" does not exist

Где, когда я меняю URL-адрес БД на jdbc:postgresql://127.0.0.1:5432/postgres, местный тест пройден. Бобы создаются правильно.

Проблема в сборке CI

Однако в сборке CI, независимо от имени БД как app или postgres, тест не проходит с

Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'readOnlyDataSource' threw exception; nested exception is org.postgresql.util.PSQLException: Connection to 127.0.0.1:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

У меня есть определенные миграции на пролетных путях, и я вижу в журналах, что миграции успешно выполнялись один раз с основным источником данных для чтения и записи. После создания соединения только для чтения, просмотрев журналmigrations are up to date, поэтому я думаю, что он не пытался запустить снова, используя соединение RO.

Также я использовал @Primary в моей конфигурации чтения-записи, так что пролетный путь знает, что использовать этот источник данных для своих миграций, а не соединение только для чтения.

@Bean(name = ["primaryDataSource"])
    @Primary
    @ConfigurationProperties("spring.datasource.configuration")
    fun primaryDataSource(dataSourceProperties: DataSourceProperties): HikariDataSource {
        return dataSourceProperties.initializeDataSourceBuilder()
            .type(HikariDataSource::class.java)
            .build()
    }

Есть ли какие-либо ограничения на подключение только для чтения к встроенным postgres?

0 ответов

Другие вопросы по тегам