Flyway с пружинной загрузкой перезаписывает всю БД каждый раз, когда я переключаю режим работы между WAR и IDE. - PullRequest
0 голосов
/ 17 мая 2018

Я сталкиваюсь с очень странной проблемой при интеграции миграции базы данных flyway с приложением весенней загрузки.

Когда я запускаю приложение из исполняемого файла WAR с помощью командной строки, оно создает новую БД при запуске приложения.Теперь, если я переключаю режим запуска приложения в IDE (т.е. запускаю из STS), он снова запускает весь скрипт из моей папки db/migration.Я вижу изменения времени столбца installed_on каждый раз, когда я переключаюсь между этими двумя режимами работы.Я попытался включить свойство baselineOnMigrate, но не получил никакого эффекта от него.Как вы думаете, это что-то связанное со встроенным tomcat с весенней загрузкой?потому что при обоих запусках он создает отдельного встроенного кота.

Пожалуйста, найдите мой подпружиненный загрузочный файл application.properties ниже:

mssql.dbname=issueDB
mssql.password=password
mssql.dbserver=localhost
mssql.port=1501

spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://${mssql.dbserver}:${mssql.port};databaseName=${mssql.dbname}
spring.datasource.username=user
spring.datasource.password=${mssql.password}

spring.flyway.baselineOnMigrate=true
spring.flyway.locations=classpath:db/migration/testissue
spring.flyway.out-of-order=true
spring.flyway.baseline-version=1.3
spring.flyway.placeholder-prefix=$
spring.flyway.placeholder-suffix=$
spring.flyway.mixed=true
spring.flyway.cleanOnValidationError=true

1 Ответ

0 голосов
/ 18 мая 2018

Полагаю, это может быть вызвано этим свойством spring.flyway.cleanOnValidationError=true.В соответствии с документами :

Должен ли автоматически вызываться очистка или нет при возникновении ошибки проверки.

Это предназначено исключительно для удобства разработки.Даже несмотря на то, что мы настоятельно рекомендуем не менять сценарии миграции после того, как они были проверены в SCM и запущены, это обеспечивает способ беспрепятственного решения этого случая.База данных будет очищена автоматически, гарантируя, что при следующей миграции вы вернетесь в состояние, проверенное в SCM.

Возможно, у вас возникли проблемы с проверкой, если вы запускаете приложение различными способами.в той же базе данных и на пролетном пути просто очистите базу данных и перезапишите ее в текущем состоянии сценариев.

...