Liquibase:columnName 为必填项

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 有什么问题?

fly*_*lyx 7

您的 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)