Liquibase ValidationFailedException when upgrading to 1.3.1 from 1.2.4

Hi Team,

As the title described .Seems some Liquibase Changesets that have been published were changed , detail log :

   Caused by: liquibase.exception.ValidationFailedException: Validation Failed:
     5 change sets check sum
          io/jmix/email/liquibase/changelog/001-email.xml::1::email was: 8:0f8e39555a92ca8bef011515261e2c9a but is now: 8:f5d8b1556a4edce419b77d8c0cb5a365
          io/jmix/quartz/liquibase/changelog/001-quartz.xml::3::jmix-quartz was: 8:f905a5c74acd104107dd3aa638e2fbe0 but is now: 8:13ec400b608f12c089d37b396ba47725
          io/jmix/quartz/liquibase/changelog/001-quartz.xml::6::jmix-quartz was: 8:6db8b55ab481121dd1608055eab12c1c but is now: 8:8538bb45c0fac36c810dc26f1a00ce21
          io/jmix/quartz/liquibase/changelog/001-quartz.xml::7::jmix-quartz was: 8:7c0d3f89d63e3586c3e01e66bb28aba5 but is now: 8:d38bcdc3bc2b60a9c097eeb8c36fb064
          io/jmix/quartz/liquibase/changelog/001-quartz.xml::8::jmix-quartz was: 8:17fa61b7c7da70db5a97b6054409f949 but is now: 8:5632c6cdff61e6b15cadbdde809a15e4

How to resolve the problem? Please suggest.

Regards,
Ray

Hi,
What database do you use in the project?

It’s Mysql 8.

I’ve created an issue for that. Will be fixed in the next bugfix release. Thank you for reporting.

1 Like

Hi @gorbunkov ,

It seems the problem still exists. I updated the framework from 1.2.4 to 1.3.2, and updated database through the Studio, everything is ok. But when starting the application, the app threw the following exception:

Caused by: liquibase.exception.ValidationFailedException: Validation Failed:
     3 change sets check sum
          io/jmix/bpm/liquibase/changelog/002-bpm.xml::4::bpm was: 8:6c73ba7a5e29908be1a981487560831f but is now: 8:01738e7d714fd8b2b2b00560e52d7edd
          io/jmix/email/liquibase/changelog/001-email.xml::6::email was: 8:422728a555a404f36e3bf3c711ae6f12 but is now: 8:79ebd7ffe2e096e7ecee73ee5522ab39
          io/jmix/reports/liquibase/changelog/003-reports.xml::2::reports was: 8:908e46b3f39c1b2f94957c6c98695c06 but is now: 8:b54fab9f7b36889a8c26decc596875b7

Please take a look.

Regards,
Ray

Hi,

you are right. I’ve created an issue. The weird thing is that if after changing the Jmix version you will just run the application using gradlew bootRun, then the runtime liquibase will update the database successfully. We’ll take a look into this.

I have the same Problem with MySQL

liquibase.exception.ValidationFailedException: Validierung war nicht erfolgreich:
     Bei 2 ChangeSets stimmt die Prüfsumme nicht mehr mit der Historientabelle überein.
          io/jmix/email/liquibase/changelog/001-email.xml::6::email was: 8:79ebd7ffe2e096e7ecee73ee5522ab39 but is now: 8:422728a555a404f36e3bf3c711ae6f12
          io/jmix/reports/liquibase/changelog/003-reports.xml::2::reports was: 8:b54fab9f7b36889a8c26decc596875b7 but is now: 8:908e46b3f39c1b2f94957c6c98695c06

What Jmix version and Studio plugin version did you use?

Jmix: 1.3.3
Plugin: 1.3.7-213

  1. What is your IntelliJ version?
  2. What is your MySQL version?
  3. Do you migrate from 1.2.4 to 1.3.3?

The weird thing is that I cannot reproduce the issue using latest Jmix version and Studio plugin any more. Could you please try to execute the steps from the issue on your side?

  1. What is your IntelliJ version?

IntelliJ 2022.1.3 (Ultimate Edition)
Build: IU-221.5921.22 from June 21

  1. What is your MySQL version?

MySQL: 5.7.24 Community Edition (connector 8.0.28)

  1. Do you migrate from 1.2.4 to 1.3.3?

I dont migrate from 1.2.4, the Projekt was new createt with 1.3.3.

Could you please try to execute the steps from the issue on your side?

OK, here’s what I did:

Create new project with Jmix version 1.2.4
Change database type to MySQL
Add email, bpm and quartz addon
Recreate database using studio action
Update project to Jmix 1.3.2
Update database using studio action (update will be successful)
Run the project

The project runs so without problems with me!

But I went one step further and have updated the project to 1.3.3 and then started, here the error occurs immediately again.

Sorry, I didn’t get this. So, you say that you create new project with Jmix 1.3.3 and MySQL and get this error when creating a new database for the new project?

Yes, that is correct and I can reproduce that:

  1. Create new project with Jmix version 1.3.3
  2. Change database type to MySQL
  3. Add email, email template and quartz addon
  4. Recreate database using studio action
  5. Run the project

Here I then get the following error directly when starting the project:

2022-10-11 08:52:12.495  WARN 13784 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmix_Liquibase' defined in class path resource [io/jmix/autoconfigure/data/JmixLiquibaseAutoConfiguration.class]: Invocation of init method failed; nested exception is liquibase.exception.ValidationFailedException: Validierung war nicht erfolgreich:
     Bei 2 ChangeSets stimmt die Pr�fsumme nicht mehr mit der Historientabelle �berein.
          io/jmix/email/liquibase/changelog/001-email.xml::6::email was: 8:422728a555a404f36e3bf3c711ae6f12 but is now: 8:79ebd7ffe2e096e7ecee73ee5522ab39
          io/jmix/reports/liquibase/changelog/003-reports.xml::2::reports was: 8:908e46b3f39c1b2f94957c6c98695c06 but is now: 8:b54fab9f7b36889a8c26decc596875b7

2022-10-11 08:52:12.497  INFO 13784 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2022-10-11 08:52:12.502  INFO 13784 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
2022-10-11 08:52:12.504  INFO 13784 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2022-10-11 08:52:12.511  INFO 13784 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-10-11 08:52:12.528 ERROR 13784 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmix_Liquibase' defined in class path resource [io/jmix/autoconfigure/data/JmixLiquibaseAutoConfiguration.class]: Invocation of init method failed; nested exception is liquibase.exception.ValidationFailedException: Validierung war nicht erfolgreich:
     Bei 2 ChangeSets stimmt die Pr�fsumme nicht mehr mit der Historientabelle �berein.
          io/jmix/email/liquibase/changelog/001-email.xml::6::email was: 8:422728a555a404f36e3bf3c711ae6f12 but is now: 8:79ebd7ffe2e096e7ecee73ee5522ab39
          io/jmix/reports/liquibase/changelog/003-reports.xml::2::reports was: 8:908e46b3f39c1b2f94957c6c98695c06 but is now: 8:b54fab9f7b36889a8c26decc596875b7

Do you mean using this action by “Recreate database using studio action”?
Screenshot 2022-10-17 at 13.50.23

I ask because messages I see in your stacktrace say that there were already some script applied in the database but that should not happen when you create a new database.

Yes, thats what i mean.

Pls take a look, this might not be similar but related:

@mg.it Could you please share the sample project where you get the error? I cannot reproduce it, maybe I’ll se something in your project, in DB connection settings, etc.

Hi, i update from jmix 1.0.2 to 1.4.0 and i ran the application using gradlew bootRun ,It still not work
Screenshot (6)
Can you help me?

Hi @gorbunkov ,

Was the issue resolved?
I encountered the same problem again after a few months .
The weird thing is it works fine in my another computer.

Following is the exception messages:

Caused by: liquibase.exception.ValidationFailedException: Validation Failed:
     3 change sets check sum
          io/jmix/bpm/liquibase/changelog/002-bpm.xml::4::bpm was: 8:6c73ba7a5e29908be1a981487560831f but is now: 8:01738e7d714fd8b2b2b00560e52d7edd
          io/jmix/email/liquibase/changelog/001-email.xml::6::email was: 8:422728a555a404f36e3bf3c711ae6f12 but is now: 8:79ebd7ffe2e096e7ecee73ee5522ab39
          io/jmix/reports/liquibase/changelog/003-reports.xml::2::reports was: 8:908e46b3f39c1b2f94957c6c98695c06 but is now: 8:b54fab9f7b36889a8c26decc596875b7

My Environment:

IDEA: 2022.2.2
Jmix Studio: 1.4.3-222
Jmix Framework: 1.4.4
MySql : 8.0.19

It’s a new project , has no Jmix version migration. Just recreate the db and run.

Please take a look.

Regards,
Ray

Hi,

We couldn’t reproduce this issue.

Exception that you provided says that the liquibase changeset in the application distribution differs from the one initially applied to the database. Is it possible that while running you use some other database? Maybe you use spring profile with custom connection string, store connection settings in environment variables, etc.?