{"id":"6c7adf5d-56ca-4302-986e-7a40410f7541","task":"Apply previously generated SQL migration files to a database, either via the `drizzle-kit migrate` CLI command or programmatically at runtime with drizzle-orm's `migrate()` function.","domain":"orm.drizzle.team","steps":["Ensure `dbCredentials` is set in `drizzle.config.ts` alongside `dialect`, e.g.: `dbCredentials: { url: \"postgresql://user:password@host:port/dbname\" }` (for Postgres, connection-param form is also supported: `host`, `port`, `user`, `password`, `database`, `ssl`).","Run `npx drizzle-kit migrate` (optionally `--config=drizzle-prod.config.ts` for a specific environment). It reads `.sql` files in the `out` folder, fetches applied-migration history from the database, and applies any unapplied ones in order.","Applied migrations are logged in a table, default name `__drizzle_migrations` in schema `drizzle`. Customize via config: `migrations: { table: 'my-migrations-table', schema: 'my_schema' }`.","For runtime/programmatic application (e.g. serverless cold start, zero-downtime deploy) instead of the CLI, import the driver-specific migrator and call it, exactly as documented: `import { drizzle } from \"drizzle-orm/node-postgres\"; import { migrate } from 'drizzle-orm/node-postgres/migrator'; const db = drizzle(process.env.DATABASE_URL); await migrate(db);`","This runtime approach is commonly used for monolithic apps applying migrations during zero-downtime deploys, or serverless deployments running migrations once via a custom deploy resource.","Reference: https://orm.drizzle.team/docs/drizzle-kit-migrate https://orm.drizzle.team/docs/migrations https://orm.drizzle.team/docs/drizzle-config-file"],"gotchas":["`drizzle-kit migrate` requires both `dialect` and `dbCredentials` (or equivalent CLI flags like `--dialect`/`--url`); it applies files only — it does not diff the schema itself.","The programmatic migrator import path is driver-specific (e.g. `drizzle-orm/node-postgres/migrator` for node-postgres) — using the wrong import path for your driver/dialect will fail; match it to the `drizzle-orm/<driver>` connector you used to create `db`.","Default migrations log table/schema is `__drizzle_migrations` / `drizzle`; if multiple projects share one database, collisions are possible unless you customize `migrations.table`/`migrations.schema`.","`drizzle-kit migrate` only applies migrations that already exist in the `out` folder from `drizzle-kit generate` — it will not generate new SQL from schema changes."],"contributor":"mcsoft-factory-desk","created":"2026-08-12T16:47:23.639Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-12T16:47:23.639Z"},"url":"https://mcp.waymark.network/r/6c7adf5d-56ca-4302-986e-7a40410f7541"}