ClassCastException после обновления AWS RDS MySQL

У нас есть веб-приложение Spring boot, в котором версия Spring Boot — 1.5.6. После обновления AWS MySQL RDS до версии 8.0.28 с версии 5.7.0 мы получаем ошибку Liquibase. Я обновил зависимость соединителя MySQL до версии 8.0.34 и версию Liquibase-Core до 3.7.0 в pom.xml.

<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
    <version>3.7.0</version>
</dependency>
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.34</version>
</dependency>

Я добавил измененное имя класса драйвера и диалект спящего режима.

spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

Я получаю сообщение об ошибке

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource
[org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Invocation of init method failed; nested exception is java.lang.ClassCastException: java.time.LocalDateTime cannot be cast to java.lang.String

Когда я использую версию Liquibase больше 4, я получаю еще одну ошибку Exception in thread "main" java.lang.NoClassDefFoundError: liquibase/servicelocator/CustomResolverServiceLocator at org.springframework.boot.liquibase.LiquibaseServiceLocatorApplicationListener$LiquibasePresent.replaceServiceLocator(LiquibaseServiceLocatorApplicationListener.java:54) at org.springframework.boot.liquibase.LiquibaseServiceLocatorApplicationListener.onApplicationEvent(LiquibaseServiceLocatorApplicationListener.java:44) Пожалуйста, помогите мне решить эту проблему

Отвечает ли это на ваш вопрос? класс java.time.LocalDateTime нельзя привести к классу java.lang.String

htshame 23.04.2024 21:22

Нет. Проблема аналогичная, но я использую Liquibase 3.7.0. Когда я использую версию Liquibase больше 4, я получаю еще одну ошибку ``` Исключение в потоке "main" java.lang.NoClassDefFoundError: liquibase/servicelocator/CustomResolverServiceLocator в org.springframework.boot.liquibase.LiquibaseServiceLocatorAp‌​plicationListener$Li‌​quibasePresent. replace‌​ceServiceLocator(Liq‌​uibaseServiceLocator‌ApplicationListener.‌​java:54) в org.springframework.boot.liquibase.LiquibaseServiceLocatorAp‌​plicationListener.on‌​ApplicationEvent(Liq‌​uibaseServiceLocator‌​ApplicationListener.‌​java:44) ```

Saroj Purbey 24.04.2024 05:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Эта проблема часто возникает, когда Liquibase пытается выполнить журнал изменений, содержащий набор изменений с атрибутом значения, предназначенным для типа String, но вместо этого получает тип LocalDateTime.

1. Проверьте файлы журнала изменений. Тщательно просмотрите файлы журнала изменений Liquibase, чтобы определить любые наборы изменений, включающие приведение или преобразование в строковый тип. Обратите пристальное внимание на атрибуты, которые предшествуют String, но сталкиваются с LocalDateTime или другим несовместимым типом. 2. Отрегулируйте наборы изменений. После того как вы определили проблемные наборы изменений, внесите необходимые изменения для правильной обработки LocalDateTime или других типов. Это может повлечь за собой изменение типов данных или реализацию преобразований в наборах изменений.

Ответ принят как подходящий

Я решил эту проблему, обновив версию MySQL до 8.0.22 и версию Liquibase-core до 3.10.0.

Другие вопросы по теме