Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 设置外键检查=0在Sequelize迁移中不起作用_Mysql_Sql_Sequelize.js_Sequelize Cli - Fatal编程技术网

Mysql 设置外键检查=0在Sequelize迁移中不起作用

Mysql 设置外键检查=0在Sequelize迁移中不起作用,mysql,sql,sequelize.js,sequelize-cli,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`; 错误是 无法删除或更

以下是我的功能:

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`;
错误是

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


如果要在Sequelize迁移中删除约束/外键,需要使用以下命令:

// an example of table projects and users
await queryInterface.removeConstraint('projects', 'projects_ibfk_1'); // tableName, constraintId
await queryInterface.dropTable('users');
最好执行“设置外键检查=0”

如果您不知道约束ID(在我的例子中是projects\u ibfk\u 1),请使用:


关于sequelize我没有任何线索,但作为一名DBA,我可以告诉您,
set-foreign\u-key\u-checks=0
语句具有会话范围。如果可能,只在同一会话中执行这两条语句。@fancyPants似乎不能在同一会话中执行这两条语句。我从其他表中删除了引用,它成功了。数据库中是否同时有其他人/某些人在工作?如果是,则删除引用不是解决方案。这也是为什么我否决了Zendem的答案。我没有注意到有两个表格引用了我的。我从他们身上移除了专栏,它成功了。SET FOREIGN\u KEY\u CHECKS=0是不安全的。您完全没有引用完整性吗?你要删除列吗?那好吧。祝您有个美好的一天。
const refs = await queryInterface.getForeignKeyReferencesForTable('projects');
console.log(refs);