Skip to main content
The pnpm migrate command safely manages database schema changes. It automatically generates migrations based on Entity definitions and can apply them consistently across multiple databases.

Basic Concept

Migration is a system for version controlling database schema changes:
  • Entity-based: Auto-generate migrations from Entity definitions
  • Sequential execution: Apply migrations in creation order
  • Multi-DB support: Manage multiple databases simultaneously
  • Auto-detection: Automatically detect Entity changes and generate code

Commands

status - Check Status

Check the current migration status.
Output example:
Status types:
  • ✓ Up to date: All migrations applied
  • ⚠ N pending: N migrations not yet applied
  • ❌ Error: Database connection failed

run - Run Migrations

Apply all pending migrations.
Execution process:
Auto-generation and application:
  • Detect Entity changes
  • Auto-generate migration code
  • Apply sequentially to all target DBs
Sonamu analyzes Entity definitions and automatically generates necessary migrations. No need to manually write migration files.

Migration Generation

Auto-generation

When you modify an Entity, Sonamu automatically generates a migration.
user.entity.ts

Migration Files

Generated migration files are stored in the src/migrations/ directory.
src/migrations/20240116_103045_add_phone_to_users.ts
Structure:
  • up(): Apply migration (create tables, add columns, etc.)
  • down(): Rollback migration (revert changes)

Supported Changes

Changes that Sonamu auto-detects and generates migrations for:

Multi-Database Management

Sonamu can manage multiple databases simultaneously.

Database Configuration

sonamu.config.ts
Migration targets:
  • The current NODE_ENV preset by default
  • Explicit presets such as development, staging, production, and test
  • Read-only presets are skipped
  • All databases not ending with _slave

Batch Application

Practical Workflow

1. Change Entity

user.entity.ts

2. Check Status

3. Apply Migration

4. Update Code

user.model.ts

Advanced Usage (Programmatic)

Advanced features not provided via CLI commands can be implemented using the Migrator class directly.

Using Migrator Class

src/scripts/migration-tools.ts

Rollback Script

src/scripts/rollback-migration.ts
Run:
Data loss risk: Rollback can delete tables or columns, so use very carefully in production.

Available Actions

Actions supported by Migrator.runAction():

Troubleshooting

Migration Conflict

Problem: Multiple developers create migrations simultaneously
Solution:

Database Connection Failed

Problem: DB connection failed
Solution:

Migration Order Error

Problem: Applied in wrong order
Solution: When there are foreign key references, referenced tables must be created first. Fix method 1: Programmatic rollback and reapply
Fix method 2: Adjust Entity definition order

Best Practices

1. Apply Frequently

2. Test Before Production

3. Backup Required

4. Consider Rollback Possibility

5. Version Control with Git

Next Steps

fixture

Manage test data

Entity

Learn more about Entity definitions