Knex迁移dropForeign无法正常工作?

时间:2017-01-12 15:00:27

标签: javascript postgresql migration knex.js

将最新版本的Knex.js与Postgresql DB一起使用。

我之前有一个重命名某些表的迁移。基本上,所有的表都是复数(所以设备而不是设备),现在它们是单数的。现在我们已经决定放弃其中一个重命名的表。它有另一个表的外键。所以我想我应该能够简单地从一个表(device_group,曾经是devices_groups)中删除外键,然后删除所需的表(设备,曾经是设备)。所以我在下面创建了迁移:

exports.up = function(knex, Promise) {
  return knex.table('device_group', function (table) {
    table.dropForeign('device_id', 'devices_groups_device_id_foreign');
    table.dropColumn('device_id');
  })
  .then(() => {
    return knex.schema.dropTable('device');
  })
  .then(() => {
    return knex.table('device_group', function (table) {
      table.string('device_id');
    });
  });
};

现在每当我运行它时,我都没有在调试中看到有关尝试删除外键的任何内容。相反,我只是得到以下信息。

Knex:warning - migrations failed with error: drop table "device" - cannot drop table device because other objects depend on it

我错过了一些明显的东西吗?在删除外键之前,它似乎试图删除表。

1 个答案:

答案 0 :(得分:1)

exports.up函数中的第一行必须是

(Seg|Segunda)?