背景: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")
}
}
}
これにより、既存のすべての行に「テキストなし」という値が挿入され、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
'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、Postgres9.0を使用しています