Liquibase配置labels后changelog表对应列为空无法执行相关命令怎么办
Liquibase SQL格式changelog labels未写入数据库问题排查
- 核查SQL changelog的语法规则是否正确
SQL格式的changelog不支持单独声明labels,必须将labels配置和--changeset标注放在同一行,且必须位于Liquibase格式化注释块内,正确写法参考:
--liquibase formatted sql --changeset author_name:change_id labels:test,dev CREATE TABLE user_info ( id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(64) NOT NULL );
注意配置前缀必须为labels:,多个标签用英文逗号分隔,不要在冒号和标签值之间加多余空格,也不要用中文标点。
- 验证Liquibase版本兼容性
3.5.x及更早版本存在SQL格式changelog labels解析失败的已知缺陷,可升级到3.6.0及以上稳定版本后重新执行changelog验证。 - 检查DATABASECHANGELOG表结构是否被修改
如果手动修改过该表的labels字段定义,比如将字段长度设为0、删除字段、设置默认值为空,都会导致写入失败,可以和Liquibase默认生成的表结构做对比,确认labels字段为VARCHAR(255)类型且无强制非空等异常约束。 - 核查全局配置是否关闭了labels功能
确认liquibase.properties配置文件、执行命令参数、系统环境变量中没有配置liquibase.labels.enable=false这类禁用labels功能的参数。
内容的提问来源于stack exchange,提问作者Dmitry
相关产品推荐
相关产品推荐

