SET FOREIGN_KEY_CHECKS = 0在Sequelize迁移中不起作用

时间:2019-02-11 12:09:07

标签: mysql sql sequelize.js sequelize-cli

这是我的功能:

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`;

错误是

  

无法删除或更新父行:外键约束失败

1 个答案:

答案 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);