Изменить набор изменений 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)


arrow_upward
1
arrow_downward

Несмотря на то, что это не задокументировано, глядя на источник, кажется, что 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

arrow_upward
0
arrow_downward

Я оказался здесь, пытаясь использовать 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