执行SQL请求时出现错误

时间:2011-06-13 15:36:12

标签: mysql sql

我有一个无法执行的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

4 个答案:

答案 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);