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

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

错误是

Cannot delete or update a parent row: a foreign key constraint fails

最佳答案

如果你想在 Sequelize 迁移中删除一个约束/foreignKey,你需要使用这个:

// 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);

关于mysql - SET FOREIGN_KEY_CHECKS = 0 在 Sequelize 迁移中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54630326/

相关文章:

mysql - 连接和限制时间的mysql查询中的问题

mysql - 将 MySQL 查询转换为 Hive

sql - MySQL:按字段大小/长度排序

sql - 将列附加到 View

rest - 如何使用 Sequelize 查询构建 .json 端点?

node.js - Sequelize : M2M Filter entities that don't have a tag out

node.js - 在 Sequelize 中创建关联以进行左连接

mysql - 如何获得一列的总和?

MySQL 和 PostgreSQL 引用字段名称之间的 PHP PDO 兼容性

php - 从 MYSQL 数据透视表中筛选记录