Не удается добавить столбец, не допускающий значения NULL, в существующую таблицу. Атрибут value игнорируется?

Предыстория: у нас есть приложение 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

10
задан Erwin Brandstetter 27 December 2014 в 14:32
поделиться