Migration Strategies
Learn how to manage database schema changes effectively with Stabilize ORM
CLI Commands
terminal
❯bunx stabilize-cli generate:migration User
terminal
❯bunx stabilize-cli migrate
terminal
❯bunx stabilize-cli migrate:rollback
terminal
❯bunx stabilize-cli migrate:fresh --force
terminal
❯bunx stabilize-cli status
Programmatic Migration
scripts/migrate.ts
import { generateMigration, runMigrations, DBType } from "stabilize-orm";import { User } from "./models/User";
// Generate migration from modelconst migration = await generateMigration(User, "create_users", DBType.SQLite);console.log("SQL:", migration.up[0]);
// Run migrationsawait runMigrations( { type: DBType.SQLite, connectionString: "./data/app.db" }, [migration]);What Gets Generated
- Table creation with correct column types per database
- Auto-increment primary key for
idcolumns - NOT NULL for
requiredcolumns - UNIQUE for
uniquecolumns - DEFAULT values and expressions
- Timestamp columns from
timestampsconfig - History table if
versioned: true
Best Practices
- Always review generated migrations before running
- Test migrations on a copy of production data
- Never modify existing migrations after deployment
- Use
migrate:freshonly in development - Back up your database before production migrations
- Use
statusto check which migrations are applied