Миграция Flyway не обновляет столбцы для прямой вставки данныхJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Миграция Flyway не обновляет столбцы для прямой вставки данных

Сообщение Anonymous »

Я использую сценарий Flyway для миграции базы данных. Но во время инициализации базы данных я добавил 3 строки в свою таблицу t1. Затем с помощью миграции v1 я добавил 2 новые строки в таблицу t1. с v2 я добавил две новые строки в t1. Всего строк теперь 7. С помощью сценария Flyway v3 я добавляю новый столбец в t1 и обновляю значения по умолчанию для всех 7 строк. Хотя мой новый столбец обновляется для 4 строк, которые я вставил с помощью сценариев миграции v1, v2, но начальные 3 строки не обновляются со значениями по умолчанию, даже несмотря на то, что запрос на обновление присутствует в моей версии сценария пролетного пути v3.
В чем может быть причина? Как это исправить? Подскажите, пожалуйста?
Этот класс InitializeData, вызываемый с помощью SpringBootApplication, создает исходную таблицу t1.
@Component
@RequiredArgsConstructor
public class InitializeData {

private final DataSource dataSource;

@EventListener(ApplicationReadyEvent.class)
public void loadData() {
ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator(false, false, "UTF-8", new ClassPathResource("/data.sql"));
resourceDatabasePopulator.execute(dataSource);
}
}

data.sql
INSERT INTO public.t1(
event_name, event_description, created_by, created_dtm, updated_by, updated_dtm)
VALUES
('e1', 'desc1', 'System', now(), 'System', now()),
('e2', 'desc2', 'System', now(), 'System', now()),
('e3', 'desc3', 'System', now(), 'System', now()))

ON CONFLICT DO NOTHING;

ALTER TABLE public.t1 ADD COLUMN component_source VARCHAR(255);

-- Populate the new column with corresponding values
UPDATE public.t1 As target
SET component_source = CASE
WHEN event_name = 'e1' THEN 'i1'
WHEN event_name = 'e2' THEN 'i2'
WHEN event_name = 'e3' THEN '13'
WHEN event_name = 'e4' THEN 'i4'
WHEN event_name = 'e5' THEN 'i5'
WHEN event_name = 'e6' THEN 'i6'
WHEN event_name = 'e7' THEN 'i7'

END
WHERE event_name IN (
SELECT event_name
FROM public.t1
);


Подробнее здесь: https://stackoverflow.com/questions/793 ... -insertion
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»