我使用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
},
}));
});
},
};
我有多个模式,在其中有一个名为“ visitors”的表,我想在该表中添加“目的”表中名为“目的ID”引用的列。
迁移成功完成,我的“ visitors”表中也有一个PurposeId列。
但是,如果我在“ visitors”表中执行crud操作,则会收到此错误:
未处理的拒绝SequelizeForeignKeyConstraintError:在表“ visitors”上插入或更新违反了外键约束“ visitors_purposeId_fkey”
注意:我正在使用postgres。
答案 0 :(得分:1)
实际上,我使用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 });