Изменить набор изменений SQL

Liquibase предоставляет тег <validCheckSum>, позволяющий указать новую контрольную сумму в случае, если мы хотим изменить существующий набор изменений.

Однако этот тег не является допустимым атрибутом для наборов изменений в формате SQL. Есть runOnChange, но это другое.

Есть ли способ достичь этого?

По сути, я сделал ошибку в наборе изменений и даже не могу добавить команду отката, потому что liquibase обнаруживает изменение контрольной суммы и выдает ошибку, поэтому я застрял.

ИЗМЕНИТЬ

Конкретный набор изменений, который я пытаюсь изменить:

--liquibase formatted sql

--changeset myname:0
ALTER TABLE `customers`
CHANGE COLUMN `name` `firstName` VARCHAR(45) NULL;

--changeset myname:1
ALTER TABLE `customers`
ADD COLUMN `lastName` VARCHAR(45) NULL AFTER `firstName`;

И я храню это в файле changelog_1.05.sql. Наконец, я включаю этот файл в свой changelog.xml:

<include file="changelog_1.05.sql" relativeToChangelogFile="true"/>

Я не могу добавить <validCheckSum>, потому что это файл в формате SQL, поэтому туда нельзя добавить теги xml.


person garci560    schedule 11.04.2016    source источник


Ответы (2)


Несмотря на то, что это не задокументировано, глядя на источник, кажется, что validCheckSum является допустимым атрибутом в отформатированном журнале изменений sql. Вы можете увидеть строка 89 в FormattedSqlChangelogParser.java содержит код для поиска этого атрибута.

person SteveDonie    schedule 11.04.2016
comment
Вау круто. К сожалению, он был добавлен менее месяца назад и до сих пор не выпущен. - person garci560; 11.04.2016
comment
Я думаю, Liquibase версии 3.5.0 планируется выпустить к концу апреля 2016 года. - person SteveDonie; 12.04.2016
comment
Рад слышать. Спасибо еще раз - person garci560; 12.04.2016

Я оказался здесь, пытаясь использовать validCheckSum с файлами SQL в Liquibase 3.9.0. Это работает, но только когда "--validCheckSum" находится в новой строке без других атрибутов (в отличие от других атрибутов, таких как "--runAlways": --changeset me:test --runAlways:true --splitStatements:false --validCheckSum: 1: любой

Похоже, это связано с регулярным выражением для анализа атрибута: formattedsql/FormattedSqlChangeLogParser.java#L87" rel="nofollow noreferrer">https://github.com/liquibase/liquibase/blob/17fcfe4f8dae96ddb4caa6793051e47ce64ad933/liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChange .java#L87

person dimmel82    schedule 17.06.2020