在 knex.js 迁移中删除外键不起作用

Kir*_*ani 1 mysql node.js knex.js

我在我的 sql 上使用 knex.js 进行迁移。现在有一些错误的外键,我想删除它。我为此使用了以下语法,但它不起作用。它没有显示任何错误,但也没有删除外键。

exports.up = function(knex, Promise) {
      knex.schema.table('page_block_data', function(table) {
        table.dropForeign('page_block_data_block_id_foreign');
      });

};

exports.down = () => {};
Run Code Online (Sandbox Code Playgroud)

谁能帮我解决这个问题..?

小智 7

您缺少 up 方法的返回。这可能会导致数据库连接在查询发送到数据库服务器之前实际上已关闭。

另外,名称表名称的外键名称的前缀和后缀部分也是自动生成的。

尝试:

exports.up = function(knex, Promise) {
     return knex.schema.table('page_block_data', function(table) {
        table.dropForeign('block_id');
      });
};
Run Code Online (Sandbox Code Playgroud)


Mik*_*stö 6

您缺少 up 方法的返回值。这可能导致在查询发送到数据库服务器之前,数据库连接实际上已关闭。

尝试:

exports.up = async (knex, Promise) => {
      return knex.schema.table('page_block_data', function(table) {
        table.dropForeign('page_block_data_block_id_foreign');
      });

};

exports.down = async () => {};
Run Code Online (Sandbox Code Playgroud)