I just made the following addition to http://liquibase.org/v2_upgrade:
Liquibase 2.0 will silently add three columns to your DATABASECHANGELOG table: Tag, OrderExecuted, and ExecType. Older versions of Liquibase will be incompatible with this table because they will not supply values for these columns, two of which are not nullable.
This describes what I think is happening but some Liquibase developer should review this and correct any errors.
We discovered this because we have different development teams sharing the same database schema, i.e. sharing the same DATABASECHANGELOG table. One group upgraded to the latest version of Liquibase (since they use Maven they may not even have been aware of which specific version they were using). This meant that other groups then ran into trouble. Interestingly the liquibase scripts still worked, but could not log their changes in DATABASECHANGELOG. And since the changesets were not rolled back, things from that point on were out of sync. I was surprised it was so difficult to track down the cause of this problem.
Updating DATABASECHANGELOG should be part of the overall transaction, so that new changes are rolled back if they can’t be logged in DATABASECHANGELOG.