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

升级AWS RDS MySQL后遇ClassCastException及Liquibase兼容问题求助

解决方案

问题1:Liquibase 3.7.0 抛出 ClassCastException: java.time.LocalDateTime cannot be cast to java.lang.String

该错误源于 MySQL Connector/J 8.x 将 DATETIME 类型映射为 Java 8 的 LocalDateTime,但 Liquibase 3.7.0 对 Java 8 时间类型的支持不完善,无法正确处理 DATABASECHANGELOG 表中的时间字段。

修复步骤:

  1. 升级 Liquibase 到 3.10.x 版本(该版本完整支持 Java 8 时间类型,且兼容 Spring Boot 1.5.6):
    在 pom.xml 中排除 Spring Boot 自带的 Liquibase 依赖,手动指定版本:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-liquibase</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
        <version>3.10.3</version>
    </dependency>
    
  2. 调整 MySQL 连接 URL 参数,确保时间类型映射兼容:
    spring.datasource.url=jdbc:mysql://your-rds-endpoint:3306/your-db?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&useJDBCCompliantTimezoneShift=true
    
  3. 修正 Hibernate 方言,使用 MySQL 8.0 专用方言:
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
    

问题2:Liquibase 4.x 抛出 NoClassDefFoundError: liquibase/servicelocator/CustomResolverServiceLocator

Spring Boot 1.5.x 的 LiquibaseServiceLocatorApplicationListener 依赖 Liquibase 3.x 中的 CustomResolverServiceLocator 类,但 Liquibase 4.x 重构了服务定位器模块并移除该类,导致兼容性冲突。

若必须使用 Liquibase 4.x(不推荐,Spring Boot 1.5.6 与 4.x 兼容性较差):

  1. 禁用 Spring Boot 自带的 Liquibase 服务定位器监听器:
    在启动类上添加排除配置:
    @SpringBootApplication(exclude = LiquibaseServiceLocatorApplicationListener.class)
    public class YourApplication {
        public static void main(String[] args) {
            SpringApplication.run(YourApplication.class, args);
        }
    }
    
  2. 手动配置 Liquibase 服务定位器:
    spring.liquibase.service-locator-pattern=liquibase.parser.core.xml.XMLChangeLogParser,liquibase.changelog.ChangeLogHistoryService,liquibase.database.core.MySQLDatabase
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:53:32