【发布时间】:2017-03-22 13:41:54
【问题描述】:
我有一个表用作从另一个表中查找外键。该表非常简单,包含一个带有主键的 ID 列和一个 JSON 列。我希望从此表中删除废弃的条目。
我尝试运行此脚本:
DELETE
FROM `ate`.`test_configuration`
WHERE `ate`.`test_configuration`.`ID` NOT IN (SELECT DISTINCT `ate`.`index`.`TestID` from `ate`.`index`);
但遇到一个错误,说明我没有使用使用键列的 where 子句:
错误代码:1175。您正在使用安全更新模式,并且您尝试更新没有使用 KEY 列的 WHERE 的表 要禁用安全模式,请切换 Preferences -> SQL Editor 中的选项并重新连接。
这很令人困惑,因为我的 where 子句确实使用了主键列。我知道我可以disable safe mode as part of my script 作为一种解决方法,但仍然想了解我为什么会收到此错误。如果可能,我想避免不安全的更新。
【问题讨论】:
-
也许这个答案可以帮助你理解stackoverflow.com/a/18767430/2294163
-
我知道这是问题所在,但我正在尝试实施第一个解决方案而不是第二个解决方案。我的 where 子句按照他们的建议使用索引。
标签: mysql