Необработанный отказ SequelizeForeignKeyConstraintError: вставить или обновить таблицу - PullRequest
0 голосов
/ 19 ноября 2018

Я использую sequelize-cli для миграций:

Мой код миграции:

module.exports = {
 up(queryInterface, Sequelize) {
   queryInterface.showAllSchemas({
     options: {},
   }).then((data) => {
     data.forEach(schema => queryInterface.addColumn({
       tableName: 'visitors',
       schema, // dynamic schemas coming from loop
     }, 'purposeId', {
       type: Sequelize.INTEGER,
       references: {
         model: 'purposes', // name of Target model
         key: 'id', // key in Target model that we're referencing
       },
     }));
   });
 },
};

У меня есть несколько схем, внутри которых у меня есть таблица с названием «посетители», в этой таблице я хочучтобы добавить столбец, называемый ссылками 'targetId', из таблицы 'целях'.

Миграции успешно выполнены, также я получил столбец targetId внутри моей таблицы "посетителей".

Но если я выполняю грубые операции внутриТаблица «посетителей» Я получаю эту ошибку:

Необработанное отклонение SequelizeForeignKeyConstraintError: вставка или обновление в таблице «посетители» нарушает ограничение внешнего ключа "members_purposeId_fkey"

ПРИМЕЧАНИЕ. Я использую postgres.

1 Ответ

0 голосов
/ 20 ноября 2018

На самом деле я решил это, используя ограничения: false.

Я удалил эти ссылки из моей миграции.

Мой код миграции:

module.exports = {
 up(queryInterface, Sequelize) {
   queryInterface.showAllSchemas({
     options: {},
   }).then((data) => {
     data.forEach(schema => queryInterface.addColumn({
       tableName: 'visitors',
       schema,
     }, 'purposeId', {
       type: Sequelize.INTEGER,
     }));
   });
 },

 down(queryInterface, Sequelize) {
   queryInterface.showAllSchemas({
     options: {},
   }).then((data) => {
     data.forEach(schema => queryInterface.removeColumn({
       tableName: 'visitors',
       schema,
     }, 'purposeId', {
       type: Sequelize.INTEGER,
     }));
   });
 },
};

И в моей модели Sequelize:

Visitor.belongsTo(Purpose, { constraints: false });
...