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.✓ Up to date: All migrations applied⚠ N pending: N migrations not yet applied❌ Error: Database connection failed
run - Run Migrations
Apply all pending migrations.- 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 thesrc/migrations/ directory.
src/migrations/20240116_103045_add_phone_to_users.ts
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
- The current
NODE_ENVpreset by default - Explicit presets such as
development,staging,production, andtest - 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 theMigrator class directly.
Using Migrator Class
src/scripts/migration-tools.ts
Rollback Script
src/scripts/rollback-migration.ts
Available Actions
Actions supported byMigrator.runAction():
Troubleshooting
Migration Conflict
Problem: Multiple developers create migrations simultaneouslyDatabase Connection Failed
Problem: DB connection failedMigration Order Error
Problem: Applied in wrong orderBest 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