首页 文章

MySQL错误代码:UPDATE期间的1175(MySQL-Workbench与控制台)

提问于
浏览
2

我非常清楚启用禁用安全更新模式可以解决此问题(例如,请参见此处: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 回答

  • 1

    来自https://dev.mysql.com/doc/workbench/en/workbench-faq.html#faq-workbench-delete-safe

    默认情况下,Workbench配置为不执行KEY列上不包含WHERE子句的DELETE或UPDATE查询 .

    这样的配置可以防止您错误地删除或更新表,因为您在没有密钥的情况下对数据进行批量更新 .

    要解决此问题,您可能已经了解以下选项 .

    • 打开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;

相关问题