Database / Liquibase interview questions
What is the markNextChangeSetRan and markNextChangeSetRanSQL command used for?
The markNextChangeSetRan command records the next unrun changeSet in DATABASECHANGELOG as executed — without actually running it. This is a rescue command for situations where a change was already applied to a database outside of Liquibase (manually or through some other tool), and you need Liquibase to catch up its tracking without re-executing the DDL that was already performed.
A concrete scenario: a DBA ran an emergency hotfix directly on production — for example, ALTER TABLE payment ADD COLUMN gateway_ref VARCHAR(100); — to address a critical incident. Later, the developer adds the same change as a Liquibase changeSet. When Liquibase runs in production, it would try to add the same column again and fail with a column-already-exists error. Using markNextChangeSetRan tells Liquibase: "I know this change is already done; just record it."
# Mark the next changeSet as ran without executing it liquibase markNextChangeSetRan
The companion command markNextChangeSetRanSQL shows the SQL that would be inserted into DATABASECHANGELOG without executing it, useful for review and audit purposes.
A related but broader command is changelogSync, which marks ALL pending changeSets as run in one go. This is used when you bootstrap Liquibase onto an existing fully-provisioned database — you generate a changeLog from the current schema, then run changelogSync to register all those changeSets as already applied without actually executing them.
More Related questions...