#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 тыс. строк