- Task
- Version · 6.0
- Deliver
Run Liquibase without the DATABASECHANGELOGLOCK table
Last updated: October 19, 2026
If your platform already makes sure only one Liquibase process runs against a database at a time, such as a Kubernetes job that runs a single Liquibase container, you can stop Liquibase from creating and locking the DATABASECHANGELOGLOCK table. Without the lock, nothing stops two Liquibase processes from updating the same database at once, so do this only when your platform guarantees a single process.
Procedure
Install the liquibase-nochangeloglock extension
You only need one of these methods: add the JAR file to the Liquibase CLI, or add the Maven dependency to your project.
Liquibase CLI: Download
liquibase-nochangeloglock-5.0.4.jarfrom the extension's releases page and copy it into thelibdirectory of your Liquibase installation,LIQUIBASE_HOME/lib.Maven or an application that runs Liquibase: Add this dependency to your
pom.xml, or add the JAR file to your application's classpath.
The lock is off as soon as the extension is on the classpath. You do not need to set anything else.
Confirm that Liquibase skips the lock
Run an update with the log level set to info:
liquibase --log-level=info updateThe output no longer includes Successfully acquired change log lock. On a new database, Liquibase does not create the DATABASECHANGELOGLOCK table. An existing DATABASECHANGELOGLOCK table stays in the database, but Liquibase no longer reads or writes it, so liquibase list-locks reports No locks.
(Optional) Turn the lock back on without removing the extension
Set database-changelog-lock-enabled to true in one of these ways:
Option | Syntax |
Liquibase properties file (defaults file) |
|
Global CLI parameter |
|
Liquibase environment variable |
|
Note: The extension also reads the older liquibase.ext.nochangeloglock.enabled Java system property, and that property takes precedence when it is set. A value of true turns the lock off, and false turns it on.