Flyway- как настроить время ожидания транзакции только для миграции, а не для всего приложения

#java #spring #flyway #alter-table

#java #весна #flyway #alter-table

Вопрос:

Я борюсь с flyway и изменяю таблицу, добавляя новый столбец. Таблица содержит более 500 тыс. строк, а время ожидания транзакции моего источника данных установлено на 10 секунд. К сожалению, изменение таблицы занимает более 10 секунд, и это проблема. Я хотел бы увеличить время ожидания транзакции только для flyway, а не для всего приложения. Я искал Google и документацию, и я не нашел ни одного совета для этого. Его можно настроить только с помощью application.properties? Я думал о создании нового источника данных с увеличенным временем ожидания, прогнозируемым только для flyway, но я не уверен, хорошее ли это решение и будет ли оно работать. Лучшим решением для меня было бы что-то вроде покрытия flyway.migrate(); с помощью @Transactional, как пример ниже

     @Transactional(timeout = FLYWAY_TRANSACTION_TIMEOUT)
    public FlywayMigrationStrategy flywayMigrationStrategy() {
        return flyway -> flyway.migrate();
    }
 

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

1. Какую базу данных вы используете? Некоторые разрешают устанавливать свойства подключения в URL-адресе JDBC, что явно повлияет только на Flyway, а не на другие приложения.

2. @JuliaHayward Я использую Mysql

3. Хорошо, я не вижу способа изменить время ожидания с помощью JDBC. Я не знаю, будет ли работать приведенный выше код, если вы попробуете его (в безопасной среде!) что происходит? Это медленная ТАБЛИЦА ALTER или последующее обновление нового столбца, изменение / заполнение индексов и т. Д.?

4. это просто ALTER TABLE `TableName` ADD COLUMN `newColumnName` BIT(1) AFTER `existingColumnName`; не более того, но таблица содержит более 500 тыс. строк