Database / Liquibase interview questions
What is the Liquibase diff command and when is it useful?
The diff command compares two database connections (or a database against a snapshot) and reports differences in schema objects — tables, columns, indexes, foreign keys, views, sequences, and stored procedures. It is one of Liquibase's most powerful tools for identifying schema drift and for bootstrapping a changeLog from an existing database.
Common uses:
- Detecting drift — Compare production against staging to find schema objects that exist in one but not the other, often caused by hotfixes applied directly to production without updating the changeLog.
- Bootstrapping — You have an existing database with no changeLog. Run
generateChangeLog(which uses the same underlying diff logic) to generate a starting changeLog from the current schema, then begin tracking future changes from that baseline. - Pre-deployment verification — Before deploying to production, diff the current production schema against a snapshot of what Liquibase expects after update to catch surprises.
Basic command syntax:
liquibase diff \ --url=jdbc:postgresql://prod-db:5432/myapp \ --username=admin --password=secret \ --reference-url=jdbc:postgresql://staging-db:5432/myapp \ --reference-username=admin --reference-password=secret
The related diffChangeLog command goes one step further — it not only shows the differences but generates the changeSets needed to bring the target database in line with the reference. This is useful for capturing changes that a developer made directly in the database and needs to codify as a formal Liquibase migration.
More Related questions...