Supported database

MySQL schema diagrams from migrations

Run your migrations on a real MySQL 8.0, 8.4, 9 in Docker and get the resulting schema as an SVG. 22 migration tools can draw on MySQL.

Versions

Pass the version as the version field with databaseType=MYSQL. Each one is a stock image, started fresh for every drawing.

VersionImage
8.0mysql:8.0
8.4mysql:8.4
9mysql:9

What the diagram shows on MySQL

MySQL has no schema inside a database, so the database itself is what the diagram reads. Type names come back in upper case: INT, VARCHAR, DATE.

The types are the names the engine's JDBC metadata reports, without lengths: an integer column reads INT, a short text VARCHAR, a calendar date DATE. Tables are read from the database; the migration tool's own bookkeeping table is left out.

Migration tools that draw on MySQL

petclinic on mysql 9
ER diagram of the PetClinic schema drawn by SchemaDrawer on MySQL 9

The PetClinic sample, drawn from Flyway migrations on MySQL 9. Open the SVG.

Run it

Draw on MySQL 9

The same request works for every tool; only migrationType and the files change.

curl -X POST https://schemadrawer.com/api/v1/drawing \
  -H "Request-Id: $(uuidgen)" \
  -F "userId=5f0c1d2e-3a4b-4c5d-8e6f-7a8b9c0d1e2f" \
  -F "migrationType=FLYWAY" \
  -F "databaseType=MYSQL" \
  -F "version=9" \
  -F "files=@db/migration/V1__create_owners_and_pets.sql" \
  -F "files=@db/migration/V2__create_vets.sql" \
  -F "files=@db/migration/V3__create_visits.sql"
# {"jobId":"0b6e2f4c-8d1a-4c3e-9f7a-2a5b6c7d8e9f"}
- uses: schemadrawercom/action@v1
  with:
    sql-directory: db/migration
    output-path: docs/schema-diagram.svg
    migration-type: FLYWAY
    database-type: MYSQL
    database-version: '9'
    github-token: ${{ secrets.GITHUB_TOKEN }}
From the blog

Reading about MySQL

Draw your MySQL schema now

Upload the migration directory, pick the version you deploy to, get an SVG back.