Using Liquibase Preconditions to Make Schema Changes Idempotent and Environment‑Safe
When shared dev or staging databases drift, Liquibase changesets can fail with duplicate‑object errors. This post shows how to wrap changesets in preconditions, demonstrates a working example, explains the MARK_RAN trade‑off, and gives practical checks to keep migrations reliable.