Skip to content
In this guide

Guide · Doing

See what changed in a schema

Read this when orders-prod has a column you don't remember adding, or a migration ran overnight and you want to see what it did. Seqora has been recording since the first time you connected, so there is nothing to set up. History works on all four engines.

What Seqora records

Seqora checks the watched schemas when a connection opens, every 30 minutes while it stays open, when you refresh the explorer, and around every change Seqora makes itself. A check that finds nothing new writes a few bytes. A check that finds a change stores a snapshot of the schema and records the change.

The watched schemas are public on PostgreSQL, plus every schema you open in Seqora, up to 20. On MySQL and MariaDB it is the connection's database, and on SQLite it is main.

Everything stays on your machine, in the same encrypted store that holds your connections and designs. Nothing is uploaded. The checks read the catalog only and never write to your database, so they are safe on production.

Every change carries one of four sources:

  • You: Seqora made it, from a design, a compare or the SQL editor. The time is exact.
  • Migration: a migrations table such as _prisma_migrations, flyway_schema_history or schema_migrations gained rows in the same window. The change names the versions, for example 0046_discounts.
  • No migration: neither of the above. Someone changed the schema by hand, or with a tool Seqora doesn't know.
  • First snapshot: where the history starts.

PostgreSQL and SQLite keep no time for DDL, so an outside change shows as a window: 11:00–16:40 means the last check that saw the old schema was at 11:00 and the first that saw the new one was at 16:40. When the migrations table records when it ran, the window narrows to that.

Open the History tab

  1. Right-click orders-prod in the explorer and choose Schema history. A schema's own menu has History too.
  2. The tab opens on public with Since set to Last connect.
  3. Pick another day, First snapshot or Custom under Since to change the range.

When a change arrives that you didn't make in Seqora, a toast lists it, for example + orders.discount_code with 0046_discounts. Its History button opens the tab. If you close the toast, the connection's row in the explorer shows "3 new" until you open History.

The command palette knows time words. Type since tue, yesterday or last week to list every connection that changed in that range, or run Schema history and pick a schema.

Read a range

The feed on the left lists the changes, newest first, grouped by day. Checks that found nothing fold into one quiet line, such as "18 check-ins". Each change shows its time or window, its counts (+2 −1 ~1), its source and the tables it touched.

Click one change to see it alone. Click a second to make a range. The middle lists what changed in the range, grouped by table, and the right pane shows the selected table's DDL before and after, with the added and removed lines marked. Rows with No migration take the warning colour and icon.

Take snapshot checks the schema now instead of waiting for the next check.

Put it back

Undo script opens a compare that makes the live schema match the start of the range. You review, check and apply it like any other compare. Data a drop deleted does not come back.

Diagram at … opens the ER diagram of the schema as it was at the start of the range. It is read-only.

Settings

Settings → Schema history turns recording off for every connection or for one, and sets how long check-ins are kept: 30, 90 or 365 days, 90 by default. Changes and their snapshots are kept until you delete them. The page shows how much space each connection uses, its watched schemas, and Delete history.

Caveats

  • Free shows the last 7 days in full. Older changes, Custom, Undo script, Diagram at … and the Since column on the Columns overview and in the column inspector are Pro. Recording is free, so history from before you upgrade is there when you do.
  • Time words in the palette reach back 7 days on Free.
  • A hand-made change in the same window as a migration is listed under that migration. Seqora can't tell them apart and doesn't guess.
  • Seqora never knows who made an outside change. It knows when it noticed.
  • A rename shows as a drop and an add.
  • History only covers time when Seqora was open and connected. A change made while it was closed shows up at the next connect, with a window that spans the gap.

Last checked against Seqora 0.4.6 development build, PostgreSQL 16 on .

Bugs and small complaints both go to this address. I read every email myself.