尝试使用Liquibase添加一列,我被卡住了。
YAML:
databaseChangeLog:
- changeSet:
id: add-status-1
author: me
failOnError: true
changes:
- addColumn:
tableName: CODEENTRY
columns:
- column:
name: STATUS
type: char(3)
value: USE
rollback:
- dropColumn:
tableName: CODEENTRY
columnName: STATUS
启动应用程序以开始迁移时,会出现以下错误:
columnName is required, classpath:db/changelog/initial/20-add-status.yaml::add-status-1::AXRGU02
columnType is required, classpath:db/changelog/initial/20-add-status.yaml::add-status-1::AXRGU02
Liquibase文档没有说明任何带有“columnName”或“columnType”属性的标签,这让我更加困惑。
有谁知道如何解决这个或我的YAML有什么问题?
答案 0 :(得分:1)
您的YAML有效,但在语义上不正确。
这部分:
- column:
name: STATUS
type: char(3)
value: USE
定义这是列表的条目(-
),列表项是映射,因为它由键值对组成。第一个键值对是column:
。由于以下键的缩进方式与column:
相同,因此将它们视为后续键值对。因此,您的密钥column:
包含空值。你想要的是键column:
将所有其他值保存为嵌套映射。为此,您需要进一步缩进其他键:
- column:
name: STATUS
type: char(3)
value: USE
在上下文中:
databaseChangeLog:
- changeSet:
id: add-status-1
author: me
failOnError: true
changes:
- addColumn:
tableName: CODEENTRY
columns:
- column:
name: STATUS
type: char(3)
value: USE
rollback:
- dropColumn:
tableName: CODEENTRY
columnName: STATUS