We had an issue whereby changesets that had been successfully run once (and marked as EXECUTED in the databasechangelog) would run the same changelog again later. We found that the changelogs that used "liquibase declarative syntax" were more prone to this than changelogs using .
We were running with full on DEBUG and noticed the checksum was happening against "the generated SQL", in particular around alter statements. This results in potentially different checksums between different versions of Liquibase, if the SQL generation changes.
What we still didn't understand is why the "runOnChange" 'logic' was invoked by default as we did not specify runAlways or runOnChange in our changesets. All we observed was that the job was rerunning already successful migrations.
We'd like to verify our assumptions and are curious about anything else that might have caused this