首页 > 解决方案 > 使用 migrate:undo 和 Sequelize CLI 时,removeColumn 不会删除带有外键的列

问题描述

我正在为我的数据库使用 sequelize CLI。我需要将具有外键(1:n 关系)的列添加到现有表中,进展顺利,列已成功添加并按预期工作。问题开始了,当我运行从迁移db:migrate:undo调用函数时。down我在removeColumn那里使用,但它不会删除该列,只是继续没有任何错误。

迁移示例:

export default  {
  up: (queryInterface, Sequelize) => {
    queryInterface.addColumn('table', 'someId', {
      type: Sequelize.INTEGER,
      references: {
        model: 'someModel',
        key: 'id'
      },
      onUpdate: 'cascade',
      onDelete: 'set null'
    })
  },

  down: (queryInterface, Sequelize) => {
    queryInterface.removeColumn('table', 'someId')
  }
};

迁移本身工作正常,只是撤消不会删除列或外键,而是继续进行而不会出现任何错误。预期的行为是removeColumn删除指定的列和相关的外键。

标签: node.jsdatabasesequelize.js

解决方案


推荐阅读