You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不关闭MySQL安全更新模式如何解决UPDATE操作报错1175

问题根因

你遇到的1175报错是MySQL安全更新模式的触发提示:

Error Code: 1175. 您正在使用安全更新模式,尝试更新表时WHERE子句未使用KEY列,如需禁用安全模式,请在「偏好设置 -> SQL编辑器」中切换选项后重新连接。

安全更新模式的核心规则是:执行不带LIMIT的UPDATE/DELETE语句时,WHERE子句必须使用*索引列(KEY列)*作为过滤条件,避免误操作全表数据。本次报错有两个触发原因:

  • WHERE条件用到的qtyinstock列未创建索引,不属于规则要求的KEY列
  • 你写的嵌套子查询完全冗余,当表有多行时还会返回多值引发赋值错误,完全可以简化
无需禁用安全更新模式的解决方案
  • 方案1:给过滤列加索引(推荐,同时可提升UPDATE执行效率)
    先给qtyinstock列创建普通索引,满足安全模式对KEY列的要求:
    ALTER TABLE test ADD INDEX idx_qtyinstock (qtyinstock);
    
    再执行简化后的UPDATE语句即可:
    UPDATE test SET unit_price = unit_price * 1.15 WHERE qtyinstock > 0;
    
  • 方案2:WHERE条件追加主键过滤
    如果test表存在主键(比如常见的自增主键id),可以在WHERE中追加主键的有效过滤条件,让安全模式识别到KEY列的使用:
    UPDATE test SET unit_price = unit_price * 1.15 WHERE qtyinstock > 0 AND id > 0;
    
    注:id > 0是自增主键匹配所有有效行的通用写法,可根据你的表主键命名、取值规则调整为匹配所有有效行的主键条件即可。

内容的提问来源于stack exchange,提问作者Elohim Miranda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:48:03