
3200 stars · MIT (named in the About sidebar and on the Perl archive) · v1.6.1 (2026-01-06), settled from metacpan.org; GitHub shows no releases and the page header reads v1.6.2-dev · Track this in Scout
Applies database changes in dependency order, written as plain scripts in each engine's own dialect.
Radar check
What we found when we opened it. Every bar is one fact, with its date.
Last code pushed 26 Sep 2026, 29 days before this check.
Latest release v1.6.1 on 6 Jan 2026.
Public since January 2012, a little over 14 years.
3,178 stars and 215 forks.
2 commits and 3 new issues in the last 90 days.
67 contributors. 2 pull requests merged in 90 days.
No security policy file says how to report a problem. No published security advisories.
How the bars are scored
- Alive. Days since the last code push: a week or less 100, a month 90, three months 70, six months 50, a year 30, eighteen months 15, older 0.
- Releases. Age of the latest GitHub release, on a similar scale; no bar when the project publishes no releases.
- Maturity. Age of the project: eight years 100, five 90, three 70, two 55, one 40, six months 25, younger 10.
- Adoption. Stars on a log scale: 100,000 stars is 100, 10,000 is 80, 1,000 is 60, 100 is 40.
- Activity. Commits in the last 90 days: 300 or more 100, 100 85, 30 65, 10 45, any 25.
- Community. People who have contributed: 100 or more 100, 30 80, 10 60, 5 40, 2 25, one 10.
- Security. A published security policy 80, none 40; published advisories are listed, not scored.
Checked by Repo Radar on 26 Oct 2026 from the repository on GitHub. Covered in Edition 62.
▶Repo detailsthe review · specs · pros & cons · install
What it does
Each change is a script written in the native language of the target database, so a PostgreSQL change is PostgreSQL and an Oracle change is Oracle. A plan file records the changes and what each one depends on, and Sqitch works out the order from those dependencies rather than from numbered file names. The dependency tracking works across separate projects, so one project's change can require another's. Until a project is tagged and released, its deploy scripts can still be edited freely, which is unusual and useful during development. Twelve engines are supported, with stated minimum versions: PostgreSQL 8.4, YugabyteDB 2.6, CockroachDB 21, SQLite 3.8.6, MySQL 5.1, MariaDB 10.0, Oracle 10g, Firebird 2.0, Vertica 7.2, Exasol 6.0, ClickHouse 25.8 and Snowflake. It writes no SQL on anyone's behalf and reads no model definitions: there is no code that turns a class into a table, and that absence is deliberate.
Why it matters
Who it suits. Teams that write SQL by hand and want the ordering problem solved without a framework deciding how the schema is described. It suits anyone running more than one engine, or anyone who has had a numbered migration applied twice. Skip it if your framework already owns the schema, because Django, Rails and Laravel each bring their own system and two systems managing one database is worse than either.
Verdict. Mature, careful software, and the installation is the part to think about. Version 1.6.1 was released on 6 January 2026 and the repository header already shows 1.6.2 in development, so it is maintained. The project is written in Perl, which is why the install differs from everything else in today's list: use the packaged version from your operating system rather than building it. The twelve-engine support is not padding — the same approach works unchanged across them, which is rare. If you want one small binary and a simpler model, amacneil/dbmate and pressly/goose are both excellent and both use numbered migrations instead of dependencies.
- Changes are plain SQL in the engine's own dialect, with nothing in between.
- Ordering comes from stated dependencies, so files do not need numbering.
- Twelve database engines, with stated minimum versions for each.
- Written in Perl, so building it from source pulls in a toolchain most people would rather avoid.
- Conflicts with a framework that already manages migrations.
- 3,200 stars, and the GitHub releases page is empty — the versions are published to the Perl archive instead, which makes the project look quieter than it is.
- amacneil/dbmate
7.3k stars, MIT; one small binary and plain SQL migrations, numbered rather than dependency-ordered. Simpler, and less able to express an order.
Track this in Scout - pressly/goose
11.3k stars, MIT; a command-line tool and a Go library, with migrations written either as SQL or as Go functions.
Track this in Scout
# Debian or Ubuntu sudo apt-get install sqitch libdbd-pg-perl # macOS brew install sqitch sqitch init myproject --engine pg sqitch add users -n "Add the users table" # write the SQL in deploy/users.sql, revert/users.sql and verify/users.sql sqitch deploy db:pg://localhost/mydb
