Вопрос

После краткого руководства по жидкая основа я создал набор изменений (очень тупой :) )

Код:

<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.6"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.6
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.6.xsd">

    <changeSet id="1" author="me">
        <createTable tableName="first_table">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
        </createTable>
        <createTable tableName="new_table">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
        </createTable>
    </changeSet>

</databaseChangeLog>

Я создал чистую схему и запустил команду миграции.

Liquibase создала базу данных с поддерживающими таблицами datachangelog и ..lock.

Как теперь отслеживать изменения??я изменил набор изменений, добавив новый элемент createTable, но когда я пытаюсь выполнить команду «обновить», liquibase сообщает мне об этом

Migration Failed: Validation Failed:
     1 change sets check sum

так что я не думаю, что понял, как работать с жидкой базой.

Кто-нибудь может указать мне правильное направление??

Спасибо

Это было полезно?

Решение

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

Вместо этого вам нужно добавить другой <changeSet> и поместите в него новый элемент createTable.

QuickStart хорош для чтения, но он действительно быстрый :-) Ознакомьтесь с полным текстом. руководство, особенно его Набор изменений раздел.

Другие советы

Этот принятый в настоящее время ответ немного устарел из-за изменений в Liquibase 2.x.В версии 2.x Liquibase по-прежнему не будет работать, если контрольная сумма md5 изменилась для набора изменений, но вы можете указать runOnChange атрибут, если вы хотите иметь возможность его изменить.

Из документация:

runOnChange - Выполняет изменение при первом его появлении и каждый раз при изменении набора изменений.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top