Database Migration Guide
Create, run, and manage database migrations for schema changes.
Overviewโ
Gauzy uses TypeORM migrations for database schema management. Migrations ensure consistent schema changes across all environments.
Migration Workflowโ
Generating a Migrationโ
After modifying entities, generate a migration:
# Generate migration from entity changes
yarn typeorm migration:generate -n MyMigrationName
# Create an empty migration
yarn typeorm migration:create -n MyMigrationName
Migration File Structureโ
import { MigrationInterface, QueryRunner } from "typeorm";
export class AddTaskPriorityColumn1706000000000 implements MigrationInterface {
name = "AddTaskPriorityColumn1706000000000";
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
ALTER TABLE "task"
ADD COLUMN "priority" varchar(50)
`);
}
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
ALTER TABLE "task"
DROP COLUMN "priority"
`);
}
}
Running Migrationsโ
# Run pending migrations
yarn typeorm migration:run
# Revert last migration
yarn typeorm migration:revert
# Show migration status
yarn typeorm migration:show
Multi-ORM Considerationโ
When using MikroORM, migrations are handled differently:
# MikroORM migration generation
yarn mikro-orm migration:create
# MikroORM migration run
yarn mikro-orm migration:up
Best Practicesโ
| Practice | Description |
|---|---|
Always include down() | Enable rollback capability |
| Test on fresh database | Verify migration from scratch |
| Never modify existing | Create new migration instead |
| Use raw SQL for data changes | Avoid using entity classes |
| Backup before running | Always backup production DB |
Related Pagesโ
- Database Backup & Recovery โ backup strategies
- Multi-ORM Deep Dive โ ORM patterns
- Entity Reference โ entity schemas