Может ли spring создать новую схему (с использованием flyway) при запуске, а затем подключиться к ней через источник данных по умолчанию?

#java #spring-boot #jpa #flyway

#Ява #пружинный ботинок #jpa #взлетно-посадочная полоса

Вопрос:

В моем приложении для весенней загрузки заданы следующие свойства,

 spring.jpa.hibernate.ddl-auto=none spring.datasource.url=jdbc:mysql://127.0.0.1:3306/my-schema spring.datasource.username=root spring.datasource.password=***** spring.flyway.check-location=false spring.flyway.createSchemas=true spring.flyway.schemas=my-schema  

Схема «моя схема» не существует заранее, и я бы хотел, чтобы она была создана flyway, а затем использовалась приложением spring-boot для ускорения источника данных HikarCP.

Если я запускаю приложение с вышеуказанными конфигурациями, при запуске я получаю следующую ошибку:

 Caused by: org.flywaydb.core.internal.exception.FlywaySqlException: Unable to obtain connection from database: Unknown database 'my-schema'  

Теперь, если я изменюсь,

 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/  

Приложение запускается идеально и создает схему. Однако при попытке запросить любую таблицу возникает исключение:

 java.sql.SQLException: No database selected  

Ответ №1:

Вы можете настроить Flyway с помощью URL-адреса, который используется исключительно для миграции, а затем настроить приложение на использование другого URL-адреса. Что — то вроде этого:

 spring.flyway.url=jdbc:mysql://127.0.0.1:3306 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/my-schema  

Вам также необходимо будет предоставить учетные данные для подключения к базе данных, специфичного для Flyway, с использованием spring.flyway.user и spring.flyway.password .

Комментарии:

1. Это сработало для меня как заклинание. Спасибо тебе, Энди. Однако есть одна небольшая загвоздка. Всякий раз, когда вы устанавливаете spring.flyway.url , вам также нужно отдельно установить spring.flyway.user amp; spring.flyway.password

2. Хорошая мысль. Я отредактировал свой ответ на этот счет.