// the find
sqitchers/sqitch
Sensible database change management
Sqitch is a database change management tool that works independently of any ORM or framework. You write native SQL for your database engine, declare dependencies between changes, and Sqitch handles ordered deployment, revert, and verification. It's aimed at teams that want proper schema versioning without being locked into Rails migrations or Flyway.
The dependency graph between changes is genuinely useful — you can declare that change B requires change A even if they were committed out of order, and Sqitch will sort it out. The Merkle-tree plan file means deployment integrity is verifiable, not just sequential. Database coverage is unusually wide (Postgres, MySQL, Oracle, Snowflake, ClickHouse, etc.) and each engine has its own CI workflow with real database versions tested. The revert scripts are first-class citizens, not an afterthought — every change ships with deploy, revert, and verify scripts.
It's written in Perl, which means your team needs Perl tooling, CPAN, and someone willing to debug Moose stack traces when something goes wrong — this is a real barrier in 2026. Installation is not trivial: the bundling approach works but is fragile, and Docker is the only realistic option for most teams. There's no native CI/CD integration beyond running the CLI in a shell step. The plan file format is bespoke and not widely understood, so onboarding new developers always requires a learning curve that Flyway or Liquibase don't impose.