Ошибка при интеграции жидкости с Spring Boot 2 - PullRequest
0 голосов
/ 11 июня 2018

Я работаю над проектом Spring Boot, и меня просят вызвать файл sql с использованием liquibase.

Файл sql содержит сценарии для настройки таблиц Spring Quartz.

ВотФайл POM:

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.sap.lsm</groupId>
   <artifactId>SAPLicencesAndSecurityManagement</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>SAPLicencesAndSecurityManagement</name>
   <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
         <version>2.0.1.RELEASE</version>
         <relativePath /> <!-- lookup parent from repository -->
   </parent>

   <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>1.8</java.version>
         <m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot>
   </properties>

   <dependencies>

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>

                <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>*</artifactId>
            </exclusion>
            <exclusion>
                <groupId>ch.qos.logback</groupId>
                <artifactId>*</artifactId>
            </exclusion>
                       <exclusion>
                              <groupId>org.apache.logging.log4j</groupId>
                              <artifactId>*</artifactId>
                       </exclusion>

                </exclusions>
         </dependency>
         <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>

                <exclusions>
                       <exclusion>
                              <groupId>org.slf4j</groupId>
                              <artifactId>*</artifactId>
                       </exclusion>
            <exclusion>
                <groupId>ch.qos.logback</groupId>
                <artifactId>*</artifactId>
            </exclusion>
                       <exclusion>
                              <groupId>org.apache.logging.log4j</groupId>
                              <artifactId>*</artifactId>
                       </exclusion>
                </exclusions>
         </dependency>

         <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
                <exclusions>
                       <exclusion>
                              <groupId>org.slf4j</groupId>
                              <artifactId>*</artifactId>
                       </exclusion>
                       <exclusion>
                              <groupId>ch.qos.logback</groupId>
                              <artifactId>*</artifactId>
                       </exclusion>
                       <exclusion>
                              <groupId>org.apache.logging.log4j</groupId>
                              <artifactId>*</artifactId>
                       </exclusion>
                </exclusions>
         </dependency>

         <dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>19.0</version>
         </dependency>

                <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency> 


        <!-- javax mail -->
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.7</version>
          <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>*</artifactId>
            </exclusion>
            <exclusion>
                <groupId>ch.qos.logback</groupId>
                <artifactId>*</artifactId>
            </exclusion>
                       <exclusion>
                              <groupId>org.apache.logging.log4j</groupId>
                              <artifactId>*</artifactId>
                       </exclusion>

                </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
          <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>*</artifactId>
            </exclusion>
            <exclusion>
                <groupId>ch.qos.logback</groupId>
                <artifactId>*</artifactId>
            </exclusion>
                       <exclusion>
                              <groupId>org.apache.logging.log4j</groupId>
                              <artifactId>*</artifactId>
                       </exclusion>

                </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
          <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>*</artifactId>
            </exclusion>
            <exclusion>
                <groupId>ch.qos.logback</groupId>
                <artifactId>*</artifactId>
            </exclusion>
                       <exclusion>
                              <groupId>org.apache.logging.log4j</groupId>
                              <artifactId>*</artifactId>
                       </exclusion>

                </exclusions>
    </dependency>

    <!-- Quartz framework -->
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.2.1</version>
          <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>*</artifactId>
            </exclusion>
            <exclusion>
                <groupId>ch.qos.logback</groupId>
                <artifactId>*</artifactId>
            </exclusion>
                       <exclusion>
                              <groupId>org.apache.logging.log4j</groupId>
                              <artifactId>*</artifactId>
                       </exclusion>

                </exclusions>
    </dependency>

    <dependency>
         <groupId>org.liquibase</groupId>
         <artifactId>liquibase-core</artifactId>
        <version>3.3.5</version>
          <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>*</artifactId>
            </exclusion>

          </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <type>jar</type>
        <scope>compile</scope>
          <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>*</artifactId>
            </exclusion>
            <exclusion>
                <groupId>ch.qos.logback</groupId>
                <artifactId>*</artifactId>
            </exclusion>
                       <exclusion>
                              <groupId>org.apache.logging.log4j</groupId>
                              <artifactId>*</artifactId>
                       </exclusion>

                </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>

   </dependencies>


   <build>
         <finalName>SAPLicencesAndSecurityManagement</finalName>
         <plugins>
                <plugin>
                       <groupId>com.sap.lsm</groupId>
                       <artifactId>SAPLicencesAndSecurityManagement</artifactId>
                       <version>0.0.1-SNAPSHOT</version>
                </plugin> 

         </plugins>
   </build>

вызов файла sql осуществляется через файл yaml с именем db.changelog-master:

[![db.changelog-master.yaml][1]][1]

enter image description here

Когда я запускаю сервер, консоль отображает ошибку следующим образом:

15:44:36.602 [localhost-startStop-1] ERROR com.mysql.jdbc.log.StandardLogger - Mon Jun 11 15:44:36 WAT 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
15:44:36.968 [HikariPool-1 connection adder] ERROR com.mysql.jdbc.log.StandardLogger - Mon Jun 11 15:44:36 WAT 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
15:44:36.997 [HikariPool-1 connection adder] ERROR com.mysql.jdbc.log.StandardLogger - Mon Jun 11 15:44:36 WAT 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
15:44:37.008 [HikariPool-1 connection adder] ERROR com.mysql.jdbc.log.StandardLogger - Mon Jun 11 15:44:37 WAT 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
15:44:39.081 [localhost-startStop-1] ERROR org.springframework.boot.SpringApplication - Application run failed
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 liquibase.exception.ValidationFailedException: Validation Failed:
 1 change sets check sum
      classpath:/db/changelog/db.changelog-master.yaml::2::marouane is now: 7:18262c5c5851874dff0c954d60b47d59

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1702)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:579)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:501)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:304)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1089)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:859)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:327)
at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:155)
at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:135)
at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:87)
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:172)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5196)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: liquibase.exception.ValidationFailedException: Validation Failed:
 1 change sets check sum
      classpath:/db/changelog/db.changelog-master.yaml::2::marouane is now: 7:18262c5c5851874dff0c954d60b47d59

at liquibase.changelog.DatabaseChangeLog.validate(DatabaseChangeLog.java:196)
at liquibase.Liquibase.update(Liquibase.java:196)
at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:415)
at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:379)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1761)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1698)
... 27 common frames omitted

Пожалуйста, помогите мне решить проблему, спасибо

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Чтобы добавить к ответу @ SteveDonie:

Вы можете решить эту ошибку следующим образом:

  • добавив <validCheckSum>7:18262c5c5851874dff0c954d60b47d59</validCheckSum> к вашему набору изменений.
  • добавив <validCheckSum>ANY</validCheckSum> к вашему набору изменений.
  • измените id вашего набора изменений.
  • удалив запись об этом наборе изменений в таблице databasechangelog (я бы не рекомендовал это).
  • удалите свою базу данных, а затем воссоздайте ее из набора изменений в liquibase.
0 голосов
/ 11 июня 2018

Сообщение об ошибке не так ясно, если вы не использовали Liquibase.

Это сообщение:

15:44:39.081 [localhost-startStop-1] ERROR org.springframework.boot.SpringApplication - Application run failed
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 liquibase.exception.ValidationFailedException: Validation Failed:
 1 change sets check sum
      classpath:/db/changelog/db.changelog-master.yaml::2::marouane is now: 7:18262c5c5851874dff0c954d60b47d59

- ключевая ошибка.Когда Liquibase применяет набор изменений к базе данных, он вычисляет контрольную сумму набора изменений именно в этот момент и сохраняет контрольную сумму в базе данных в таблице DATABASECHANGELOG.Если кто-то затем изменяет набор изменений, а затем пытается использовать Liquibase для обновления базы данных, Liquibase вычислит другую контрольную сумму для этого набора изменений и сообщит вам, что есть разница.

Существует как минимум два способа «решить» эту проблему.

  1. Если вы знаете, что база данных может быть изменена (возможно, это экземпляр dev), и вы также знаете, что набор изменений, как он существует, является правильным, тогда вы можете просто удалить базу данных ивоссоздать его из журнала изменений.

  2. Если журнал изменений (или файлы, на которые он ссылается) был изменен по ошибке, то нужно вернуть журнал изменений к тому, что было раньше.Если журнал изменений был изменен путем редактирования набора изменений (или изменения файла, подобного sql/tables_mysql.sql), это неверно - после того, как набор изменений был применен к ЛЮБОЙ базе данных, правильный способ внести изменения в то, что изменял набор изменений, состоит в создании другой набор изменений.

Вы не указали, что было в файле sql/tables_mysql.sql, но содержимое этого файла также используется в процессе проверки контрольной суммы, поэтому, когда это изменится, вы также увидите эту ошибку.

...