javascript - Knex迁移dropForeign不起作用?

标签 javascript postgresql migration knex.js

将最新版本的 Knex.js 与 Postgresql 数据库结合使用。

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

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

我在这里遗漏了一些明显的东西吗?看起来它试图在删除外键之前删除表。

最佳答案

exports.up 函数中的第一行需要是

knex.schema.table()

关于javascript - Knex迁移dropForeign不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41616339/

相关文章:

sql - Postgres 慢速限制查询

ruby-on-rails - 我应该扁平化Rails迁移吗?

ubuntu - 将虚拟机从 KVM 迁移到 Openstack

c++ - 如何以迁移友好的方式向类添加新的纯虚方法?

javascript - onclick 正在调用哪个规范化函数?

javascript - HTML 中的 2 列图书 View

javascript - CouchDB 映射函数中的 GET 请求

javascript - 如何创建嵌套的 json 数据?

python - Docker角色创建错误-角色___不存在

oracle - 如何在某些条件下获取 MAX 值(SQL)