MySQL and MSSQL migration safety when Knex cannot wrap DDL in a transaction
Goal: ensure safe recovery from a failed Knex migrate:latest on MySQL or MSSQL where DDL cannot be rolled back automatically. Constraints: Knex only records a migration after its up promise resolves, so a mid‑file failure leaves the schema ahead of the knex_migrations entry and does not invoke the down function; recovery therefore depends on external backups