我非常清楚启用禁用安全更新模式可以解决此问题(例如,请参见此处:MySQL error code: 1175 during UPDATE in MySQL Workbench) . 但是,我不希望禁用安全更新模式(并且有许多解决方案提出此建议) .
同样,我知道将WHERE子句设置为匹配所有内容的KEY值应该可以工作 . 但是,似乎没有在mysql-workbench上工作 - 至少不是我希望的方式(或它在控制台上的工作方式) .
例如,以下内容在mysql-workbench上无效(但在控制台上有效):
UPDATE FUEL_SOURCES AS FS
INNER JOIN
FUEL_CATEGORY FC ON FC.FUEL_CATEGORY = FS.FUEL_CATEGORY
SET
FS.FUEL_CATEGORY_ID = FC.ID
WHERE
FC.ID <> 0 AND FS.ID <> 0
...如果我明确地/确切地设置了ID(例如 WHERE FC.ID = 20 AND FS.ID <> 10
),它将在mysql-workbench中工作 . 但这样做将涉及遍历每个密钥对组合 .
可以知道导致这种行为的原因,或者我是否正在做一些可怕的错误 . 使用mysql-workbench 6.3
1 回答
来自https://dev.mysql.com/doc/workbench/en/workbench-faq.html#faq-workbench-delete-safe
这样的配置可以防止您错误地删除或更新表,因为您在没有密钥的情况下对数据进行批量更新 .
要解决此问题,您可能已经了解以下选项 .
打开Workbench Preferences,选择SQL Editor部分,并禁用以下首选项: "Safe Updates" - Forbid UPDATEs and DELETEs with no key in WHERE clause or no LIMIT clause.
运行
SET SQL_SAFE_UPDATES=0;