我的代码是:
DB.sequelize.query('SET FOREIGN_KEY_CHECKS = 0').complete(function(err) {
if (err) {
return done(err);
}
DB.sequelize.drop();
return DB.sequelize.sync().complete(function(err) {
if (err) {
return done(err);
}
});
});
Run Code Online (Sandbox Code Playgroud)
我有一些外键限制,但我认为SET FOREIGN_KEY_CHECKS = 0会忽略它,让我放弃.相反,我得到的错误是:ER_ROW_IS_REFERENCED: Cannot delete or update a parent row: a foreign key constraint fails
对于使用sequelize 3.15.x的任何人,他们都重构了他们的查询方法,以便初始SQL语句之后的任何选项都包含在一个选项对象中.因此答案如下:
DB
.sequelize
.query('SET FOREIGN_KEY_CHECKS = 0', {raw: true})
.then(function(results) {
DB.sequelize.sync({force: true});
});
Run Code Online (Sandbox Code Playgroud)
请尝试以下方法.
DB
.sequelize
.query('SET FOREIGN_KEY_CHECKS = 0', null, {raw: true})
.success(function(results) {
DB.sequelize.sync({force: true});
});
Run Code Online (Sandbox Code Playgroud)
同步的"force:true"选项会将"DROP TABLE IF EXISTS"添加到create语句中,因此这应该实现您尝试使用drop().
它也值得考虑这个答案:Sequelize不会创建外键作为约束.
| 归档时间: |
|
| 查看次数: |
5928 次 |
| 最近记录: |