Могат ли да бъдат заменени приложените набори от промени на Liquibase

Ако използвам mysql база данни с utf-8 и InnoDB, но liquibase причинява грешка, защото размерът на реда на таблица е твърде голям. Имам издаден набор от промени, който причинява грешката, защото надвишава размера на реда.

<changeSet author="author" id="id">
    <addColumn tableName="TABLE">
        <column name="COLUMN" type="VARCHAR(5000)" />   <!-- Row size is too long -->
    </addColumn>
</changeSet>

Решението на проблема с размера на реда е да се промени "VARCHAR(5000)" в "TEXT", но проблемът е, че този набор от промени е бил изпълнен на някои системи, така че не мога просто да го променя тук.

Има ли някакво решение да кажете на liquibase, че трябва да замени набора от промени с друг, ако все още не е изпълнен?


person Bernhard    schedule 21.05.2014    source източник


Отговори (1)


OK намери решение за това. Възможно е да използвате validCheckSum, за да кажете на Liquibase, че този набор от промени е бил променен.

Току-що промених набора от промени и добавих етикета по този начин.

<changeSet author="author" id="id"> 
    <validCheckSum>oldChecksum</validCheckSum>
    <validCheckSum>newChecksum</validCheckSum>  
    <addColumn tableName="TABLE">
        <column name="COLUMN" type="TEXT" />
    </addColumn>
</changeSet>

След това liquibase прие набора от промени като изпълнен, така че беше възможно да се направи нов набор от промени, който модифицира колоната.

<changeSet author="author" id="anotherId">
    <modifyDataType tableName="TABLE" columnName="COLUMN" newDataType="TEXT" />
</changeSet>
person Bernhard    schedule 22.05.2014
comment
Как оценявате новата контролна сума? просто стартирайте скрипта на liquibase на друга база? - person Askar Kalykov; 18.12.2014
comment
Как намирате старата и новата контролна сума? Когато стартирам liquibase, той извежда само идентификатора, който е неуспешен. - person John Little; 07.08.2015