У нас есть веб-приложение 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)
Пожалуйста, помогите мне решить эту проблему
Нет. Проблема аналогичная, но я использую Liquibase 3.7.0. Когда я использую версию Liquibase больше 4, я получаю еще одну ошибку ``` Исключение в потоке "main" java.lang.NoClassDefFoundError: liquibase/servicelocator/CustomResolverServiceLocator в org.springframework.boot.liquibase.LiquibaseServiceLocatorApplicationListener$LiquibasePresent. replaceceServiceLocator(LiquibaseServiceLocatorApplicationListener.java:54) в org.springframework.boot.liquibase.LiquibaseServiceLocatorApplicationListener.onApplicationEvent(LiquibaseServiceLocatorApplicationListener.java:44) ```
Эта проблема часто возникает, когда Liquibase пытается выполнить журнал изменений, содержащий набор изменений с атрибутом значения, предназначенным для типа String, но вместо этого получает тип LocalDateTime.
1. Проверьте файлы журнала изменений. Тщательно просмотрите файлы журнала изменений Liquibase, чтобы определить любые наборы изменений, включающие приведение или преобразование в строковый тип. Обратите пристальное внимание на атрибуты, которые предшествуют String, но сталкиваются с LocalDateTime или другим несовместимым типом. 2. Отрегулируйте наборы изменений. После того как вы определили проблемные наборы изменений, внесите необходимые изменения для правильной обработки LocalDateTime или других типов. Это может повлечь за собой изменение типов данных или реализацию преобразований в наборах изменений.
Я решил эту проблему, обновив версию MySQL до 8.0.22 и версию Liquibase-core до 3.10.0.
Отвечает ли это на ваш вопрос? класс java.time.LocalDateTime нельзя привести к классу java.lang.String