Liquibase relies on the community to ensure broad database support. The table below lists the databases that have been reported to work for users out-of-the-box. If you’re looking for guaranteed or certified support for a particular database, go to Liquibase.com for information. 

Additional databases, as well as enhancements for the below databases, are available through Liquibase extensions.

Check out our specific database tutorials for how Liquibase works with all of the databases below.

Database Type Name Notes
Amazon Aurora mysql, postgresql Amazon Aurora operates in PostgreSQL and MySQL compatibility modes. The type name should match the compatibility mode when working with Amazon Aurora.
Amazon RDS mariadb, mysql, mssql, oracle, postgresql Amazon Relational Database Service instances should be indistinguishable from other database instances of the same type.
Amazon Redshift extension
Azure SQL mssql
Cassandra (Apache) cassandra extension
Cassandra (Datastax Astra) cassandra extension
CockroachDB postgresql 8.2+ is required to use the “drop all database objects” functionality.
Derby (Apache) derby
EnterpriseDB
Firebird firebird
Google Cloud Spanner Cloud Spanner Needs to be used with our extension. See Using Liquibase with Cloud Spanner.
H2 h2
Hibernate extension
Hive extension
HyperSQL (HSQL) hsqldb
IBM DB2 db2
Impala extension
Informix
MariaDB mariadb
Microsoft Azure SQL
Microsoft SQL Server mssql
MongoDB extension
MySQL mysql
Oracle oracle 11g driver is required when using the diff tool on databases running with AL32UTF8 or AL16UTF16
Percona XtraDB Cluster mysql
PostgreSQL postgresql
SAP Hana hana extension
SAP MaxDB maxdb extension
SkySQL
Snowflake snowflake extension
SQLite sqlite
Sybase Anywhere sybase
Sybase Enterprise asany
Vertica vertica extension
VoltDB extension

As of Liquibase v3.1, support for some less common databases has been moved out of Liquibase core and into extensions.

To re-enable support for these databases, install the corresponding extension:

Using other databases

Since Liquibase is built on top of standard JDBC, the only ties it has to the underlying database is through the SQL that can vary from DBMS to DBMS. If you attempt to use Liquibase with an unsupported database, it will try to run and will most likely succeed. The only problem you are likely to run into is the current date/time function name. If Liquibase is unable to determine the correct date/time function, you can pass it in via the “command line” and documentation/Ant).

You may also run into a problem with the SQL generated by the change/refactoring tags on unsupported databases. The best way to deal with this problem is to first try the standard change/refactoring tags. If it generates an error, you can fall back to the sql change to code whatever change you need to make in a way that your database understands.

If for some reason the DatabaseChangeLog table cannot be created on your database, the base creation SQL that you can modify to suit your needs is:

CREATE TABLE DATABASECHANGELOG (id varchar(150) not null, 
author varchar(150) not null,
filename varchar(255) not null,
dateExecuted datetime not null, 
md5sum varchar(32),
description varchar(255),
comments varchar(255),
tag varchar(255), 
liquibase varchar(10), 
primary key(id, author, filename))

Reasons for creating the DatabaseChangeLog table yourself include a database that requires null fields to be specified as such and index limitations that don’t allow primary keys on fields as long. You can change the data types and or data type lengths all you want.