我随机收到此错误。我正在基于用户名从 activeusers 表中删除它有时会给我错误并且有时会顺利运行。 这是我的删除代码
让我们说
data={nickname:'asad',id:1}
activeusers.destroy({where:{username:data.nickname} }).then(res=>{
});
答案 0 :(得分:1)
这是MySQL更新的常见问题。这是您的查询:
DELETE FROM ActiveUsers WHERE username = 'mazhar.hayat@ibexglobal.com'
错误源于您未在WHERE
子句中使用主键列。如果您根本没有WHERE
子句,也会看到此错误。 MySQL有一种模式,可以将这样的DML查询视为不安全,因为它很广泛并且存在破坏数据的风险。
有一个可能有用的黑客解决方案。您可以修改查询以提及主键列,如下所示:
DELETE
FROM ActiveUser
WHERE username = 'mazhar.hayat@ibexglobal.com' AND id=id
这可能会欺骗MySQL认为查询是安全的,因为它提到了id
子句中的主键列WHERE
。
但我建议你直接在MySQL中关闭安全更新模式。编辑您的启动脚本,并确保脚本中未提及--safe-updates
和--i-am-a-dummy
。
修改强>
如果您想从destroy
处理此问题,则查询选项是唯一选项:
Post.findAll(
{ where: ["username = ? AND id = id", data.nickname] }
).success()