MigrationPilot vs Liquibase
Liquibase is a powerful migration execution engine. MigrationPilot is a focused safety linter. Use them together — Liquibase runs your changelogs, MigrationPilot catches unsafe patterns before they reach production.
Why Add MigrationPilot to Liquibase?
Liquibase
Enterprise migration execution
- -XML/YAML/JSON changelogs with abstracted changesets
- -Java-based — requires JVM on all CI/CD systems
- -Multi-database support (PostgreSQL, MySQL, Oracle, SQL Server, etc.)
- -Rollback support and changelog tracking (DATABASECHANGELOG table)
- -Limited DDL safety checks — no lock analysis, no risk scoring
MigrationPilot
Focused safety linter
- +80 PostgreSQL-specific safety rules
- +npx one-liner — no JVM, no XML, no setup
- +Lock type analysis with per-statement breakdown
- +Risk scoring (RED/YELLOW/GREEN) with safe alternatives
- +Auto-detects Liquibase SQL changelog format
Use them together. Liquibase handles migration execution, rollbacks, and changelog tracking. MigrationPilot handles safety analysis — it reads your raw SQL changesets and catches dangerous patterns that Liquibase doesn't check for.
Feature Comparison
| Feature | Liquibase (OSS) | Liquibase (Pro) | MigrationPilot |
|---|---|---|---|
| Primary purpose | Migration execution | Migration execution | Migration safety linting |
| DDL safety rules | None | Basic checks | 83 rules |
| Lock type analysis | — | — | Yes (per-statement) |
| Risk scoring | — | — | RED/YELLOW/GREEN (0-100) |
| Auto-fix | — | — | 12 rules |
| Safe alternatives | — | — | Yes (code suggestions) |
| GitHub Action | Community | Yes | Free + inline annotations |
| SARIF output | — | — | Yes (GitHub Code Scanning) |
| Runtime required | JVM | JVM | Node.js (or npx) |
| Configuration | XML/YAML/JSON + properties | XML/YAML/JSON + properties | Zero-config or YAML |
| Schema versioning | Yes | Yes | No (lint only) |
| Rollback support | Yes | Yes + auto-rollback | Rollback DDL generation |
| PostgreSQL parser | No | No | Yes (libpg-query) |
| Multi-database | Yes | Yes | PostgreSQL focused |
| Price | Free | Starting at $2,500/yr | $0 (77 rules free) |
| License | Apache 2.0 | Commercial | MIT |
Setup Comparison
Liquibase Setup
# 1. Install Java (if not present)
apt-get install openjdk-17-jre
# 2. Download Liquibase
wget https://github.com/liquibase/.../liquibase.tar.gz
tar -xzf liquibase.tar.gz
# 3. Create liquibase.properties
cat > liquibase.properties << EOF
changeLogFile=changelog.xml
url=jdbc:postgresql://localhost:5432/mydb
username=postgres
password=secret
EOF
# 4. Create XML changelog
cat > changelog.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog ...>
<changeSet id="1" author="dev">
<sql>CREATE INDEX idx ON users(email);</sql>
</changeSet>
</databaseChangeLog>
EOF
# 5. Run
liquibase updateMigrationPilot Setup
# That's it. One command.
npx migrationpilot analyze migrations/
# Or add to CI (also one step):
# .github/workflows/lint.yml
- uses: mickelsamuel/migrationpilot@v1
with:
path: migrations/No JVM. No properties file. No XML. Just point it at your SQL files.
Add Safety Linting to Liquibase
Lint SQL changelogs in CI
Point MigrationPilot at the SQL files referenced by your Liquibase changelogs.
# Add before your liquibase update step:
- uses: mickelsamuel/migrationpilot@v1
with:
path: sql/ # Directory with your SQL changesetsUse SQL format changelogs
If you use Liquibase's SQL format (recommended for PostgreSQL), MigrationPilot can analyze them directly. XML changelogs with embedded SQL are also supported.
Keep Liquibase for execution
MigrationPilot is read-only. It never touches your database. Continue using liquibase update for migration execution and rollbacks.
Safety linting without the enterprise complexity
83 safety rules. Zero config. No JVM required. Works with Liquibase SQL changelogs out of the box.