Flyway не может установить схему в Java весной? - PullRequest
1 голос
/ 01 июля 2019

Моя проблема заключается в том, что я не могу выполнить миграцию с Java-файла flyway, даже если файлы миграции обнаружены, и те же файлы миграции работают из cmd.

Я уже пытался установить все возможные полезные параметрыЯ нашел в Интернете, чтобы настроить схему, но она по-прежнему придерживается "PUBLIC"

Прежде всего проблема заключается в следующем: (логи из Java Spring)

"2019-07-01 15:06:04.296  INFO 296 --- [           main] o.f.core.internal.command.DbMigrate      : Current version of schema "PUBLIC": << Empty Schema >>
2019-07-01 15:06:04.297  INFO 296 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 1 - Create person table
2019-07-01 15:06:04.324  INFO 296 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 2 - Add people
2019-07-01 15:06:04.339  INFO 296 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 3 - Add people2
2019-07-01 15:06:04.356  INFO 296 --- [           main] o.f.core.internal.command.DbMigrate      : Successfully applied 3 migrations to schema "PUBLIC" (execution time 00:00.094s)"

Таблицаназывается public , и я также не могу видеть его из MySQL Workbench.

Но если я делаю это из командной строки с миграцией flyway, он изменяет схему с именем td , что я и собираюсь сделать:

"Migrating schema `td` to version 1 - Create person table
Migrating schema `td` to version 2 - Add people
Successfully applied 2 migrations to schema `td` (execution time 00:00.207s)"

Конфигурация flyway для Java:

public static void main(String[] args) {
    Flyway flyway = new Flyway();
    flyway.setBaselineOnMigrate(true);
    flyway.migrate();
    SpringApplication.run(TimeReportApplication.class, args);
}

application.properties:

flyway.user=root
flyway.password=root
flyway.url=jdbc:mysql://localhost:3306/td
flyway.schemas=TD

Рабочая конфигурация flyway для командной строки:

flyway.url=jdbc:mysql://localhost:3306/td
flyway.user=root
flyway.password=root

У вас есть предложения, что может пойти не так?

1 Ответ

0 голосов
/ 02 июля 2019

Итак, после дня попыток я нашел решение:

  1. Вы должны добавить «Источник данных» в файл инициализации. Spring будет автоматически настроен из вашего файла application.properties, который вы должны поместить в src / main / resources:

    открытый класс TimeReportApplication {

    @Autowired
    static DataSource dataSource;
    
    public static void main(String[] args) {
        PrintLog.print("Server started");
        System.out.println("Server started");
        Flyway flyway = new Flyway();
        flyway.clean();
        flyway.setDataSource(dataSource);
        flyway.setSqlMigrationPrefix("V");
        flyway.setBaselineOnMigrate(true);
        flyway.migrate();
        SpringApplication.run(TimeReportApplication.class, args);
    }
    

    }

  2. В вашем файле application.properties пишите перед каждым параметром «пружина», например: spring.flyway.user = корень
...