22 migration tools, one diagram
Upload the migration files exactly as your tool keeps them. SchemaDrawer runs the real tool, in its real version, against a throw-away database and draws what comes out.
Java
Go and language-independent
Python
Node.js and TypeScript
.NET
PHP
Ruby
No tool matches. Missing yours? Tell us which one to add next.
Which tool draws on which engine
22 tools times 6 engines in 23 versions. A tool is missing from an engine only when the tool itself ships no driver for it.
| Tool | PostgreSQL | MySQL | MariaDB | SQL Server | Oracle | SQLite |
|---|---|---|---|---|---|---|
| Flyway | Yes | Yes | Yes | Yes | Yes | Yes |
| Liquibase | Yes | Yes | Yes | Yes | Yes | Yes |
| golang-migrate | Yes | Yes | Yes | Yes | No | No |
| Alembic | Yes | Yes | Yes | Yes | Yes | Yes |
| goose | Yes | Yes | Yes | Yes | No | Yes |
| dbmate | Yes | Yes | Yes | No | No | Yes |
| Atlas | Yes | Yes | Yes | No | No | Yes |
| Prisma Migrate | Yes | Yes | Yes | Yes | No | Yes |
| DbUp | Yes | Yes | Yes | Yes | Yes | No |
| FluentMigrator | Yes | Yes | Yes | Yes | Yes | No |
| Doctrine Migrations | Yes | Yes | Yes | Yes | Yes | Yes |
| Laravel | Yes | Yes | Yes | Yes | No | Yes |
| ActiveRecord (Rails) | Yes | Yes | Yes | Yes | No | Yes |
| Django | Yes 15 and newer | Yes 8.4 and newer | Yes 11.4 and newer | Yes | Yes | Yes |
| Drizzle ORM | Yes | Yes | Yes | No | No | Yes |
| Sqitch | Yes | Yes | Yes | No | Yes | Yes |
| Diesel | Yes | Yes | Yes | No | No | Yes |
| EF Core | Yes | Yes | Yes | Yes | No | No |
| MikroORM | Yes | Yes | Yes | Yes | No | No |
| Knex.js | Yes | Yes | Yes | Yes | Yes | Yes |
| Sequelize | Yes | Yes | Yes | Yes | Yes | Yes |
| TypeORM | Yes | Yes | Yes | Yes | Yes | Yes |
Django refuses PostgreSQL 10 to 14, MySQL 8.0 and MariaDB 10.6 (Django 6 dropped them), so those versions are not offered for it.
Real tools, real engines, no parser
A migration is only truly defined by what the tool does with it. SchemaDrawer never parses your files: it starts the engine and version you name, runs your tool inside Docker and reads the schema back over JDBC.
Same version, same behaviour
Flyway 13, Liquibase 5, Prisma 7, Django 6, EF Core 9 and the rest, each in its own container image. Whatever the tool accepts, SchemaDrawer accepts.
Real error messages
A migration that fails comes back with the tool's own output, exit code included, not with a parser's guess at what went wrong.
Bookkeeping hidden
The tool's own history table (flyway_schema_history, _prisma_migrations, django_migrations, ...) is left out, so the diagram shows your schema only.
Draw your schema in the next five minutes
One HTTP call with your migration files, one poll, one SVG. Free while we build it.