You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Liquibase创建Cassandra表时List/Set类型字段报错的解决方法

解决Liquibase创建Cassandra集合类型字段的XML解析异常问题

问题根源

你遇到的org.xml.sax.SAXParseException是因为XML解析器把list<text>里的<text>当成了XML标签,而非字段类型的一部分,违反XML语法规则导致解析失败。

正确实现方式

针对Cassandra的List/Set集合类型,Liquibase的XML changelog需要规避XML解析对尖括号的误判,以下是几种可行方案:

方案1:使用XML转义字符替换尖括号

将类型声明里的<转义为&lt;,>转义为&gt;,示例代码:

<createTable tableName="your_target_table">
    <column name="id" type="uuid" constraints="primaryKey"/>
    <column name="temps" type="list&lt;text&gt;"/>
</createTable>

方案2:用CDATA块包裹类型定义

CDATA块内的内容不会被XML解析器当作标签处理,适合直接写原始类型语法:

<createTable tableName="your_target_table">
    <column name="id" type="uuid" constraints="primaryKey"/>
    <column name="temps">
        <type><![CDATA[list<text>]]></type>
    </column>
</createTable>

方案3:改用YAML格式的changelog(推荐)

YAML语法对尖括号的兼容性更好,无需额外转义,直接声明集合类型即可:

databaseChangeLog:
  - changeSet:
      id: create-target-table
      author: your-name
      changes:
        - createTable:
            tableName: your_target_table
            columns:
              - column:
                  name: id
                  type: uuid
                  constraints:
                    primaryKey: true
              - column:
                  name: temps
                  type: list<text>

额外验证要点

  • 确保项目已引入Liquibase Cassandra扩展依赖,版本需与Liquibase核心版本兼容:
<!-- Maven依赖示例 -->
<dependency>
    <groupId>org.liquibase.ext</groupId>
    <artifactId>liquibase-cassandra</artifactId>
    <version>4.25.0</version>
</dependency>
  • 检查changelog文件的XML/YAML语法是否完整,避免未闭合标签或格式错误

内容的提问来源于stack exchange,提问作者Tomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:44:56