Ultimate

X_MIGRATION_UNGENERATABLE

Means

this migration holds SQL no declaration carries and does not say so

Typical cause

the third rail of the drift step, and the one a squash discards. x db gen can only write what an entity declares, so a hand-written CREATE TYPE … AS ENUM, CREATE EXTENSION, GRANT, ALTER TABLE … REPLICA IDENTITY FULL or a data backfill is lost the moment anyone regenerates — and no declaration-based check can see it, because a regenerated sidecar equals the declaration by construction. examples/dummy's 0001_init.sql holds 7: five enum types and both replica identities. A count, not a boolean, so the first hand-written statement does not buy that file an unlimited allowance

Fix

add the header line -- ungeneratable: <n> to the file packages/db/migrations/<id>.sql that the finding names, so a squash carries these statements by hand — or re-declare what an entity can express (an enum is a text column plus a check invariant) and run x db gen "<name>". Add the marker before the migration is applied: it is SQL the checksum covers, so marking an applied file answers X_MIGRATION_CONFLICT

Listed under Entity and database

This page as markdown