Command Line Tools
dbmigrate create blank
dbmigrate create blank
Section titled “dbmigrate create blank”Create an empty database migration file with up and down methods.
Synopsis
Section titled “Synopsis”wheels dbmigrate create blank <name>CommandBox Parameter Syntax
Section titled “CommandBox Parameter Syntax”This command supports multiple parameter formats:
- Positional parameters:
wheels dbmigrate create blank addIndexes(name as positional) - Named parameters:
name=value(e.g.,name=addIndexes,description="Add indexes") - Flag parameters:
--flag=value(e.g.,--name=addIndexes)
Parameter Mixing Rules:
ALLOWED:
- Positional:
wheels dbmigrate create blank addIndexes - All named:
name=addIndexes description="Custom migration" - Positional + named:
wheels dbmigrate create blank addIndexes description="Add indexes"
NOT ALLOWED:
- Mixing positional + named for same parameter:
wheels dbmigrate create blank addIndexes name=other
Recommendation: Use positional for name, named for optional parameters: wheels dbmigrate create blank addIndexes description="My migration"
Description
Section titled “Description”The dbmigrate create blank command generates a new empty migration file with the basic structure including up() and down() methods. This provides a starting point for custom migrations where you need full control over the migration logic.
Options
Section titled “Options”--name
Section titled “--name”- Type: String
- Required: Yes
- Description: The name of the migration (will be prefixed with timestamp)
--description
Section titled “--description”- Type: String
- Default: Empty
- Description: Add a description comment to the migration file
Examples
Section titled “Examples”Create a basic empty migration
Section titled “Create a basic empty migration”# Positional (recommended)wheels dbmigrate create blank add_custom_indexes
# OR flag syntaxwheels dbmigrate create blank --name=add_custom_indexes
# OR namedwheels dbmigrate create blank name=add_custom_indexesCreate migration with description
Section titled “Create migration with description”# Positional + named (recommended)wheels dbmigrate create blank update_user_permissions description="Add role-based permissions to users"
# OR all flagswheels dbmigrate create blank --name=update_user_permissions --description="Add role-based permissions to users"
# OR all namedwheels dbmigrate create blank name=update_user_permissions description="Add role-based permissions to users"Generated File Structure
Section titled “Generated File Structure”The command creates a file named YYYYMMDDHHmmss_<name>.cfc with the following structure:
component extends="wheels.migrator.Migration" hint="<description>" {
function up() { transaction { // Add your migration code here } }
function down() { transaction { // Add code to reverse the migration } }
}Use Cases
Section titled “Use Cases”Custom Database Operations
Section titled “Custom Database Operations”For complex operations not covered by other generators:
# Create migration for custom stored procedurewheels dbmigrate create blank --name=create_reporting_procedures
# Edit the file to add:# - CREATE PROCEDURE statements# - Complex SQL operations# - Multiple related changesData Migrations
Section titled “Data Migrations”When you need to migrate data, not just schema:
# Create data migrationwheels dbmigrate create blank --name=normalize_user_emails
# Edit to add data transformation logic# Example: lowercase all email addressesMulti-Step Operations
Section titled “Multi-Step Operations”For migrations requiring multiple coordinated changes:
# Create complex migrationwheels dbmigrate create blank --name=refactor_order_system
# Edit to include:# - Create new tables# - Migrate data# - Drop old tables# - Update foreign keysDatabase-Specific Features
Section titled “Database-Specific Features”For database-specific features not abstracted by Wheels:
# Create migration for PostgreSQL-specific featureswheels dbmigrate create blank --name=add_json_columns
# Edit to use PostgreSQL JSON operationsBest Practices
Section titled “Best Practices”1. Descriptive Names
Section titled “1. Descriptive Names”Use clear, descriptive names that indicate the migration’s purpose:
# Goodwheels dbmigrate create blank --name=add_user_authentication_tokens
# Badwheels dbmigrate create blank --name=update12. Implement Both Methods
Section titled “2. Implement Both Methods”Always implement both up() and down() methods:
function up() { transaction { execute("CREATE INDEX idx_users_email ON users(email)"); }}
function down() { transaction { execute("DROP INDEX idx_users_email"); }}3. Use Transactions
Section titled “3. Use Transactions”Wrap operations in transactions for atomicity:
function up() { transaction { // All operations succeed or all fail createTable("new_table"); execute("INSERT INTO new_table SELECT * FROM old_table"); dropTable("old_table"); }}4. Add Comments
Section titled “4. Add Comments”Document complex operations:
function up() { transaction { // Create composite index for query optimization // This supports the findActiveUsersByRegion() query execute(" CREATE INDEX idx_users_active_region ON users(is_active, region_id) WHERE is_active = 1 "); }}Available Migration Methods
Section titled “Available Migration Methods”Within your blank migration, you can use these helper methods:
createTable(name, options)- Create a new tabledropTable(name)- Drop a tableaddColumn(table, column, type, options)- Add a columnremoveColumn(table, column)- Remove a columnchangeColumn(table, column, type, options)- Modify a columnaddIndex(table, columnNames, unique, indexName)- Add an indexremoveIndex(table, column)- Remove an indexexecute(sql)- Execute raw SQLannounce(message)- Output a message during migration
- Migration files are created in
/app/migrator/migrations/or your configured migration path - The timestamp ensures migrations run in the correct order
- Always test migrations in development before production
- Keep migrations focused on a single purpose
Related Commands
Section titled “Related Commands”wheels dbmigrate create table- Create a table migrationwheels dbmigrate create column- Create a column migrationwheels dbmigrate up- Run migrationswheels dbmigrate down- Rollback migrationswheels dbmigrate info- View migration status