Rap*_*ler 4 database yaml database-migration liquibase
尝试使用 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
Run Code Online (Sandbox Code Playgroud)
当启动应用程序开始迁移时,出现以下错误:
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
Run Code Online (Sandbox Code Playgroud)
Liquibase 文档没有声明任何带有属性“columnName”或“columnType”的标签,这让我更加困惑。
有谁知道如何解决这个问题或者我的 YAML 有什么问题?
您的 YAML 有效,但语义不正确。
这部分:
- column:
name: STATUS
type: char(3)
value: USE
Run Code Online (Sandbox Code Playgroud)
定义这是一个列表 ( -) 的条目,列表项是一个映射,因为它由键值对组成。第一个键值对是column:。由于以下键的缩进方式与 相同column:,因此它们被视为后续键值对。因此,您的密钥column:包含一个空值。column:您想要的是将所有其他值保存为嵌套映射的键。为此,您需要进一步缩进其他键:
- column:
name: STATUS
type: char(3)
value: USE
Run Code Online (Sandbox Code Playgroud)
在上下文中:
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
Run Code Online (Sandbox Code Playgroud)