Skip to content

migrate up --pretend executes DDL when migration uses queryExecute() directly #50

Description

@edyionescu

migrate up --pretend is supposed to print the SQL that would run without executing it. When a migration uses queryExecute() directly, the DDL is silently committed to the database (only the write to the cfmigrations table is skipped).

Migrations using the schema/qb builder are not affected.

Steps to reproduce

  1. Create a migration that uses queryExecute() in up()
  2. Run migrate up --pretend
  3. No SQL is printed, but the table is created in the database
  4. Run again - fails with Table 'X' already exists
// Affected - DDL executes despite --pretend
function up( schema, qb ){
    queryExecute("CREATE TABLE users ( ... )");
}

// Not affected - schema builder correctly handles pretend mode
function up( schema, qb ){
    schema.create("users", function(table){
        table.increments("id");
    });
}

Environment

  • commandbox-migrations: 5.3.0
  • db: MySQL

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions