2017-01-12 2 views
0

Использование последней версии Knex.js с помощью Postgresql DB.Переход миграции KnexForeign не работает?

У меня есть более ранняя миграция, которая переименовывает некоторые таблицы. В принципе, все таблицы были множественными (так что устройства вместо устройства), и теперь они единственные. Теперь мы решили отказаться от одной из тех переименованных таблиц. Он имеет внешний ключ к другой таблице. Поэтому я подумал, что должен просто удалить внешний ключ из одной таблицы (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 

Я пропустил что-то очевидное здесь? Кажется, он пытается сбросить таблицу перед тем, как сбросить внешний ключ.

ответ

0

Первая строка внутри функции exports.up должна быть

knex.schema.table()