Unhandled rejection SequelizeForeignKeyConstraintError: insert or update on table

Unhandled rejection SequelizeForeignKeyConstraintError: insert or update on table

我使用 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
       },
     }));
   });
 },
};

我有多个架构,在其中我有 table 称为 'visitors',其中 table 我想添加来自 [=29= 的名为 'purposeId' 的引用] table.

迁移成功完成,我的 'visitors' table.

中也有一个 purposeId 列

但是如果我在 'visitors' table 中进行 crud 操作,我会得到这个错误:

未处理的拒绝 SequelizeForeignKeyConstraintError:在 table "visitors" 上插入或更新违反了外键约束 "visitors_purposeId_fkey"

注意:我使用的是 postgres。

实际上我使用 constraints: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 });