Удаление внешнего ключа в knex.js миграция не работает

#mysql #node.js #knex.js

#mysql #node.js #knex.js

Вопрос:

Я использую миграцию, используя knex.js на моем sql . теперь есть какой-то неправильный внешний ключ, и я хочу его удалить. Для этого я использую приведенный ниже синтаксис, но он не работает. Он не показывает никаких ошибок, но и не удаляет внешний ключ.

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

};

exports.down = () => {};
  

Кто-нибудь может мне помочь в этой проблеме ..?

Ответ №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:

попробуйте:

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

Ответ №3:

Для этого нужна строка только для чтения []. Может быть, вы можете попробовать:

 table.dropForeign(['page_block_data_block_id_foreign']);
  

Комментарии:

1. попробуйте table.dropForeign([], "page_block_data_block_id_foreign");