【问题标题】:Drop foreign key in knex.js migration is not working在 knex.js 迁移中删除外键不起作用
【发布时间】:2019-08-29 21:50:31
【问题描述】:

我在我的 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 = () => {};

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

【问题讨论】:

    标签: mysql node.js knex.js


    【解决方案1】:

    您的 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 () => {};
    

    【讨论】:

      【解决方案2】:

      它需要一个只读字符串[]。也许你可以试试:

      table.dropForeign(['page_block_data_block_id_foreign']);
      

      【讨论】:

      • 试试table.dropForeign([], "page_block_data_block_id_foreign");
      【解决方案3】:

      尝试:

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

      【讨论】:

        猜你喜欢
        • 2021-01-06
        • 2019-01-22
        • 2021-02-08
        • 2019-08-22
        • 2016-11-13
        • 2017-07-24
        • 1970-01-01
        • 2019-01-29
        • 2017-03-26
        相关资源
        最近更新 更多