Ошибочный сбой md5sum для замены жидкой базы - PullRequest
0 голосов
/ 08 августа 2011

Мы используем liquibase 1.9.5, но я не видел в этом известной ошибки для этой версии. Короче говоря, мы успешно запустили liquibase для нашей версии 1.0, но при попытке запустить нашу версию 1.1, в которой есть дополнительные наборы изменений, она ошибается, жалуясь на md5sums набора изменений 1.0.

Мы обошли это в краткосрочной перспективе, просто обнулив столбец md5sum в DATABASECHANGELOG, но мне интересно, просто делаю ли я что-то не так.

Мы организуем нашу ликвидазу следующим образом: Один основной XML-файл, который мы запускаем при каждом развертывании, в котором есть команды для отдельного файла для каждой версии нашего программного обеспечения (в правильном порядке)

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

Итак, первый выпуск включал только v1_0.xml, а выпуск, который мы только что выпустили, включал в себя то, что мы имели выше.

Файл v1_0.xml не менялся между выпусками, но мы получили следующую ошибку при попытке вызвать liquibase для нового выпуска:

SEVERE: Validation Failed:
     1 change sets check sum
      v1_0.xml::foo_schema::bdeacon::(MD5Sum: ff63b8d1739e6cf1dcaed6a0ef585257)

Набор изменений, о котором идет речь:

<changeSet author="bdeacon" id="foo_schema">
    <preConditions onFail="MARK_RAN">
        <not><tableExists tableName="some_table"/></not>
    </preConditions>
    <sqlFile path="database/initial/foo-schema.sql" />
</changeSet>

Упомянутый файл foo-schema.sql также не менялся между выпусками. (Он выполняет первоначальное создание всей нашей схемы базы данных для нас, которая затем включает «some_table», упомянутую в предварительном условии.)

Я надеюсь, что liquibase не ожидает, что мы вручную добавим элемент validCheckSum в каждый набор изменений между выпусками ...

Ответы [ 2 ]

1 голос
/ 09 августа 2011

Вам не нужно добавлять validCheckSum, если не изменяется содержимое набора изменений или файла sql.

Есть ли что-нибудь, например номер версии SVN или пробелы / окончания строк, которые могут изменяться в foo-schema.sql?

0 голосов
/ 25 июля 2013

Для атрибута changeSet runOnChange можно установить значение true.В этом случае всякий раз, когда любой sql-файл, на который ссылается набор изменений, изменяется, этот набор изменений будет запущен снова, и его контрольная сумма будет обновлена.См. Раздел CheckSet Check Sums в документации на liquibase.Это особенно полезно, когда код пакета / процедуры / триггера использует оператор типа «CREATE OR REPLACE», и в этом случае вам не нужно будет предшествовать вызовам файлов sql с операторами drop, чтобы избежать ошибок «..already Существует».

...