Справочная информация: у нас есть приложение Grails 1.3.7, и мы используем Liquibase для управления миграциями нашей базы данных.
Я пытаюсь добавить в существующую таблицу новый столбец, который не является пустым.
Моя ревизия выглядит так:
changeSet(author: "someCoolGuy (generated)", id: "1326842592275-1") {
addColumn(tableName: "layer") {
column(name: "abstract_trimmed", type: "VARCHAR(455)", value: "No text") {
constraints(nullable: "false")
}
}
}
Который должен был вставить значение «Нет текста» в каждую существующую строку и, следовательно, удовлетворять условию «не ноль». Liquibase "Добавить столбец" документы .
Но когда применяются наборы изменений миграции, я получаю следующее исключение:
liquibase.exception.DatabaseException: Error executing SQL ALTER TABLE layer ADD abstract_trimmed VARCHAR(455) NOT NULL: ERROR: column "abstract_trimmed" contains null values
Мне кажется, что он не использует атрибут 'value'.
Если я поменяю свою ревизию на работу, выглядело бы следующим образом, я смогу добиться того же. Но я не хочу (и не должен) делать это.
changeSet(author: "someCoolGuy (generated)", id: "1326842592275-1") {
addColumn(tableName: "layer") {
column(name: "abstract_trimmed", type: "VARCHAR(455)")
}
addNotNullConstraint(tableName: "layer", columnName:"abstract_trimmed", defaultNullValue: "No text")
}
Liquibase действительно игнорирует мой атрибут value
, или здесь происходит что-то еще, чего я не вижу?
Я использую Grails 1.3.7, плагин переноса базы данных 1.0, Postgres 9.0