Liquibase checksum validation error without any changes

If you're confident that your scripts correctly reflect what should be in the database, run the liquibase:clearCheckSums maven goal, which will clean it all up.


Everyone here is talking about how to fix this, but let me share a typical scenario where it may occur for you.

SHORT ANSWER : Change in line-separator due to one reason or another can cause checksum validation error and won't be visible in code changes.

Why did it occur for me? Please read below..

Suppose you have a tomcat server, and multiple people are involved in WAR deployment from time to time. Everyone uses INTELLIJ IDEA on LINUX but one of the team member switches to WINDOWS for some reason. Now, when the WINDOWS PERSON would create WAR, he may not notice that default line-separator selection in INTELLIJ IDEA for WINDOWS is CRLF but all previous builds built from LINUX machine which uses LF line-separator.

Change in line-separator affects all text files, which includes SQL files too. So you may have used following just like my team in your liquibase script

changeSet(author: "aditya", id: "1335831637231-1") {
    sqlFile( path: "liquibase/quartz_oracle_tables.sql", "stripComments": true)
}

and the checksum of file would not match the one already stored in database throwing checksum validation error.


In my case I forgot that Liquibase writes all changelogs to database table.

Go to DATABASECHANGELOG table and remove manually your changelogs.