这是我的功能:
up: queryInterface => {
return queryInterface.sequelize.query('SET FOREIGN_KEY_CHECKS = 0')
.then(() => queryInterface.dropTable('my_table'));
},
此查询在表中有效:
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `my_table`;
错误是
无法删除或更新父行:外键约束失败
答案 0 :(得分:0)
如果你想在 Sequelize 迁移中删除一个约束/外键,你需要使用这个:
// an example of table projects and users
await queryInterface.removeConstraint('projects', 'projects_ibfk_1'); // tableName, constraintId
await queryInterface.dropTable('users');
最好执行'SET FOREIGN_KEY_CHECKS = 0'。
如果您不知道约束 ID(在我的例子中是 projects_ibfk_1),请使用:
const refs = await queryInterface.getForeignKeyReferencesForTable('projects');
console.log(refs);