Lightweight safety linting for your migrations

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.

npx migrationpilot analyze migrations/
View on GitHub

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

FeatureLiquibase (OSS)Liquibase (Pro)MigrationPilot
Primary purposeMigration executionMigration executionMigration safety linting
DDL safety rulesNoneBasic checks83 rules
Lock type analysisYes (per-statement)
Risk scoringRED/YELLOW/GREEN (0-100)
Auto-fix12 rules
Safe alternativesYes (code suggestions)
GitHub ActionCommunityYesFree + inline annotations
SARIF outputYes (GitHub Code Scanning)
Runtime requiredJVMJVMNode.js (or npx)
ConfigurationXML/YAML/JSON + propertiesXML/YAML/JSON + propertiesZero-config or YAML
Schema versioningYesYesNo (lint only)
Rollback supportYesYes + auto-rollbackRollback DDL generation
PostgreSQL parserNoNoYes (libpg-query)
Multi-databaseYesYesPostgreSQL focused
PriceFreeStarting at $2,500/yr$0 (77 rules free)
LicenseApache 2.0CommercialMIT

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 update

MigrationPilot 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

1

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 changesets
2

Use 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.

3

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.