我有一个无法执行的SQL请求,出现此错误:
要禁用安全模式,请在首选项 - >中切换选项。 SQL编辑器 - >查询编辑器并重新连接。
您正在使用安全更新模式,并且您尝试更新没有使用KEY列的WHERE的表
我的要求:
update customfieldvalue
set stringvalue="****"
where customfieldvalue.customfield IN
(select customfield.id
from customfield
where customfield.cfname="Resoltion"
and customfieldvalue.issue=12345);
我该如何解决这个问题,因为在我的生产环境中我不能做这个操作? PS:我使用的是mysql
答案 0 :(得分:2)
仅为当前会话运行禁用它:
SET SQL_SAFE_UPDATES=0;
答案 1 :(得分:0)
解决此问题:
要禁用安全模式: 切换首选项中的选项 - > SQL编辑器 - >查询编辑器并重新连接。
原因:
您正在使用安全更新模式,并且您尝试更新没有使用KEY列的WHERE的表
(你读过这条消息了吗?它解释了一切)
答案 2 :(得分:0)
如果您无法在生产中关闭安全更新,则需要重新设计查询,以便在customfieldvalue
中至少包含一个关键列。没有它,你将进行表扫描;使用关键列#1,您最终可能会得到逻辑等效项(WHERE customfieldvalue.keycol1 IS NOT NULL
),但这将满足安全更新约束。
答案 3 :(得分:0)
SET SQL_SAFE_UPDATES=0;
update customfieldvalue
set stringvalue="****"
where customfieldvalue.customfield IN
(select customfield.id
from customfield
where customfield.cfname="Resoltion"
and customfieldvalue.issue=12345);