能否在Liquibase配置中添加自定义字段?列节点自定义报错求助
解决Liquibase列节点添加自定义标识报错的问题
方案1:启用允许未知节点的配置
Liquibase默认会严格校验变更日志中的节点,遇到未定义的节点会抛出ParsedNodeException。你可以通过以下方式禁用该校验:
YAML格式变更日志配置
在databaseChangeLog根节点添加allowUnknownNodes: true:
databaseChangeLog: allowUnknownNodes: true - changeSet: id: 123 author: itsme changes: - createTable: tableName: clientdata containsPhi: true columns: - column: name: id type: INT constraints: primaryKey: true nullable: false - column: name: firstname phi: true type: varchar(50) constraints: primaryKey: true nullable: false
全局配置(liquibase.properties)
在配置文件中添加:
liquibase.parser.allowUnknownNodes=true
命令行参数
执行Liquibase命令时添加:
liquibase --parser.allowUnknownNodes=true update
方案2:使用官方支持的remarks字段存储自定义标识
如果不想修改全局校验配置,可以利用Liquibase官方支持的remarks字段来存储自定义元数据,避免校验报错:
- changeSet: id: 123 author: itsme changes: - createTable: tableName: clientdata containsPhi: true columns: - column: name: id type: INT constraints: primaryKey: true nullable: false - column: name: firstname type: varchar(50) remarks: "phi=true" constraints: primaryKey: true nullable: false
后续其他工具可以通过解析列的remarks字段值来识别是否包含PHI标识。
方案3:自定义扩展(进阶)
如果上述方案无法满足需求,可以开发Liquibase自定义扩展,扩展列节点的schema定义,添加phi属性的支持。不过这种方式需要编写Java代码并打包成Jar包引入Liquibase,适合有开发能力的场景。
内容的提问来源于stack exchange,提问作者rookieprogrammer
相关产品推荐
相关产品推荐

