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

Spring Boot 2.4.13集成Cassandra与Liquibase无生效问题求助

Spring Boot 2.4.13 + Cassandra + Liquibase集成问题排查

我尝试将Spring Boot 2.4.13与Apache Cassandra、Liquibase集成,目标是在应用启动时自动执行数据库变更。查阅大量示例教程后,未找到匹配当前配置的方案。目前Liquibase完全不工作:日志无相关输出,数据库也未产生任何变更。请求帮忙排查配置或操作中的问题。

pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.13</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>Cassandra</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Cassandra</name>
    <description>Cassandra</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-cassandra</artifactId>
        </dependency>
        <dependency>
            <groupId>com.datastax.cassandra</groupId>
            <artifactId>cassandra-driver-core</artifactId>
            <version>3.11.3</version>
        </dependency>
        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.liquibase.ext</groupId>
            <artifactId>liquibase-cassandra</artifactId>
            <version>3.10.2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

application.properties配置

spring.data.cassandra.keyspace-name=test
spring.data.cassandra.port=9042
spring.data.cassandra.password=cassandra
spring.data.cassandra.username=cassandra
spring.data.cassandra.contact-points=127.0.0.1
spring.data.cassandra.local-datacenter=datacenter1
spring.liquibase.change-log=classpath:/db/changelog/db.changelog-master.xml

changelog-master.xml配置

<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.10.xsd">

    <changeSet id="202010211812" author="test">
        <createTable tableName="testtt">
            <column name="tableone" type="BOOLEAN"/>
        </createTable>
    </changeSet>
</databaseChangeLog>

项目结构

项目结构


排查修复方案

  1. 补充Liquibase Cassandra专属数据源配置
    Spring Boot默认依赖JDBC数据源,但Cassandra使用CQL驱动,需显式指定Liquibase的Cassandra连接信息,在application.properties中添加:

    spring.liquibase.url=cassandra://127.0.0.1:9042/test
    spring.liquibase.user=cassandra
    spring.liquibase.password=cassandra
    spring.liquibase.driver-class-name=com.datastax.driver.core.Cluster
    
  2. 修复依赖版本兼容性
    Spring Boot 2.4.13默认集成的liquibase-core版本为4.3.5,你使用的liquibase-cassandra 3.10.2版本过低,存在兼容性问题。建议升级到匹配版本,比如:

    <dependency>
        <groupId>org.liquibase.ext</groupId>
        <artifactId>liquibase-cassandra</artifactId>
        <version>4.3.5</version>
    </dependency>
    
  3. 开启Liquibase调试日志
    添加日志配置查看执行细节,排查隐藏错误:

    logging.level.liquibase=DEBUG
    
  4. 确保目标Keyspace已创建
    Liquibase不会自动创建Cassandra Keyspace,需提前通过CQL命令创建test库:

    CREATE KEYSPACE test WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};
    
  5. 修正变更集语法
    Cassandra要求表必须包含主键,修改你的变更集:

    <changeSet id="202010211812" author="test">
        <createTable tableName="testtt">
            <column name="id" type="UUID" constraints="primaryKey"/>
            <column name="tableone" type="BOOLEAN"/>
        </createTable>
    </changeSet>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:05:23