Получение «Неверного значения по умолчанию» при обновлении Liquibase с 3,2 до 3,3

0

Я использовал LIquibase 3.2 и пытаюсь перейти на 3.3, и я использую MySql 5.5. Однако обновление не выполняется для следующих типов наборов изменений...

<changeSet author="me" id="my_changeset">
    <addColumn tableName="my_table">
        <column name="STUFF_VISIBLE" type="BOOLEAN" defaultValueNumeric="0">
            <constraints nullable="false"/>
        </column>
    </addColumn>
</changeSet>

Ошибка с ошибкой

Error: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Invalid default value for 'STUFF_VISIBLE'

Есть ли способ исправить ситуацию, не переделывая все контрольные суммы? В моих наборах замены Liquibase существует ряд случаев этих типов выражений.

Теги:
liquibase
default-value
changeset

2 ответа

0

AFAIK неудачные обновления не должны быть записаны в таблицу DATABASECHANGELOG в вашей БД, поэтому, если вы измените этот конкретный набор изменений, вам не нужно будет пересчитывать контрольные суммы. Кроме того, вы всегда можете попытаться отменить конкретный набор изменений или просто открыть указанную таблицу DATABASECHANGELOG и обновить точную запись вручную (например, удалить информацию об использовании набора изменений :)). Кстати: почему вы используете defaultValueNumeric вместо defaultValueBoolean?

0

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

  • 0
    Хорошо, спасибо за это. И это помешало бы повторному запуску контрольной суммы, если новая контрольная сумма появилась в списке допустимых контрольных сумм?
  • 0
    Liquibase всегда вычисляет контрольную сумму для каждого набора изменений, который собирается применить к базе данных. Он сравнивает вычисленную контрольную сумму со строкой в таблице DATABASECHANGELOG, которая имеет тот же [changesetid, author, path], что и набор изменений, который должен быть применен, и, если контрольная сумма отличается, выдает исключение. Если вычисленная контрольная сумма указана в атрибуте validChecksum, это также считается допустимым, и набор изменений может быть применен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню