【问题标题】:class java.time.LocalDateTime cannot be cast to class java.lang.String类 java.time.LocalDateTime 不能转换为类 java.lang.String
【发布时间】:2021-06-21 13:17:23
【问题描述】:

目前我正在为我的 Spring Boot 项目使用 liquibase -> 4.3.2mysql -> 8.0.22。我正在尝试通过 liquibase 创建表。它第一次被执行。它默认创建 2 个数据库。 1. databasechangelog 和 2. databasechangeloglock 。但是当我尝试再次运行时,它给了我以下错误:

**Caused by: java.lang.ClassCastException: class java.time.LocalDateTime cannot be cast to class java.lang.String (java.time.LocalDateTime and java.lang.String are in module java.base of loader 'bootstrap')**

我的 db.changelog-1.0.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.8.xsd">

        <changeSet id="1" author="auth1">
            <sql>
                CREATE TABLE user (
                id BIGINT NOT NULL AUTO_INCREMENT,
                fname VARCHAR(255) NOT NULL,
                lname VARCHAR(255) NOT NULL,
                email VARCHAR(255) NOT NULL,
                number BIGINT NOT NULL,
                password VARCHAR(255) NOT NULL,
                role VARCHAR(255) NOT NULL,
                CONSTRAINT PK_id PRIMARY KEY (id)
                );
            </sql>
            <rollback>
                DROP TABLE user;
            </rollback>
        </changeSet>
    
        <changeSet id="2" author="auth1">
            <sql>
                CREATE TABLE plant (
                plantname VARCHAR(50)
                )

            </sql>
            <rollback>
                DROP TABLE plant;
            </rollback>
        </changeSet>

</databaseChangeLog>

db.changelog-master.xml 的代码:

<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.8.xsd">

    <include file="/db/changelog/db.changelog-1.0.xml"></include>

</databaseChangeLog>

应用程序属性

spring.application.name = Cleandrop-Backend


spring.datasource.url = jdbc:mysql://localhost:3306/cleandrop?useUnicode=true&userLegacyDatetimeCode=false&serverTimezone=UTC&createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true&useSSL=true
spring.datasource.username = root
spring.datasource.password = 1234
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.hibernate.ddl-auto=none

spring.liquibase.change-log=classpath:/db/changelog/db.changelog-master.xml

serverTimeZone=user-defined-time-zone

我也试过改mysql版本还是一样。我该如何解决这个问题?

【问题讨论】:

  • ClassCastException 的完整堆栈跟踪是什么?
  • 您能尝试检查一下不同版本的 liquibase 吗? liquibase 似乎存在一些问题,但我不确定出现此问题的版本。需要检查一下。同时尝试使用其他版本的 Liquibase 一次。
  • @RakhiAgrawal 实际上我之前检查过.. 一些具有相同类型问题的帖子,问题出在 mysql 版本中,根据帖子,liquibase 很好
  • 哦,是吗?感谢您分享详细信息。如果有帮助,也许你可以尝试更改 mysql 版本。
  • 我也遇到了同样的问题。将 liquibase 版本更改为 4.3.1 帮助我解决了这个问题。参考:[这里] (forum.liquibase.org/t/…)

标签: spring-boot liquibase mysql-connector


【解决方案1】:

用户 mohiitg 评论说更改为 liquibase 版本 4.3.1 解决了该问题。

截至 2021 年 5 月 3 日,版本 4.3.5 可用。更新到这个版本解决了我的错误。

https://mvnrepository.com/artifact/org.liquibase/liquibase-core/4.3.5

【讨论】:

    【解决方案2】:

    这只是 liquibase 和 MySQL 之间的版本控制问题。

    【讨论】:

      【解决方案3】:

      对我来说,这发生在我使用 spring boot v: 2.4.0 时 尝试使用 Spring boot 2.3.0.RELEASE 或更早版本

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-22
        • 1970-01-01
        • 2021-04-30
        • 2021-10-04
        • 2019-05-17
        • 2021-08-22
        • 2019-06-20
        • 1970-01-01
        相关资源
        最近更新 更多