Предыстория: у нас есть приложение 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")
}
}
}
Который должен был вставить значение «Нет текста» в каждую существующую строку и, следовательно, удовлетворить ограничение «not null». Документы Liquibase «Добавить столбец» .
Но когда применяются ревизии миграции, я получаю следующее исключение:
liquibase.exception.DatabaseException: Error executing SQL ALTER TABLE layer ADD abstract_trimmed VARCHAR(455) NOT NULL: ERROR: column "abstract_trimmed" contains null values
Мне кажется, что он не использует атрибут «значение».
Если я изменю свой набор изменений так, чтобы он выглядел следующим образом, я смогу добиться того же. Но я не хочу (да и не должен) этого делать.
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