diff --git a/core/server/data/migrations/utils.js b/core/server/data/migrations/utils.js index 3bbbd1cce0..63e2afd42f 100644 --- a/core/server/data/migrations/utils.js +++ b/core/server/data/migrations/utils.js @@ -375,7 +375,8 @@ function createAddColumnMigration(table, column, columnDefinition) { column, dbIsInCorrectState: hasColumn => hasColumn === false, operation: commands.dropColumn, - operationVerb: 'Removing' + operationVerb: 'Removing', + columnDefinition }) ); } diff --git a/core/server/data/schema/commands.js b/core/server/data/schema/commands.js index bdd1a28462..82b676b318 100644 --- a/core/server/data/schema/commands.js +++ b/core/server/data/schema/commands.js @@ -65,7 +65,12 @@ function addColumn(tableName, column, transaction = db.knex, columnSpec) { }); } -function dropColumn(tableName, column, transaction = db.knex) { +async function dropColumn(tableName, column, transaction = db.knex, columnSpec = {}) { + if (Object.prototype.hasOwnProperty.call(columnSpec, 'references')) { + const [toTable, toColumn] = columnSpec.references.split('.'); + await dropForeign({fromTable: tableName, fromColumn: column, toTable, toColumn, transaction}); + } + return transaction.schema.table(tableName, function (table) { table.dropColumn(column); });