执行SQL请求时出现错误

3
我有一个SQL请求无法执行,出现以下错误:

要禁用安全模式,请在首选项 -> SQL编辑器 -> 查询编辑器中切换选项并重新连接。您正在使用安全更新模式,并尝试更新没有使用键列的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个回答

2

要仅在当前会话中禁用它,请运行:

SET SQL_SAFE_UPDATES=0;

0

为了解决这个问题:

要禁用安全模式: 在首选项-> SQL编辑器->查询编辑器中切换选项并重新连接。

原因:

您正在使用安全更新模式,尝试更新一个表而没有使用关键列的WHERE。

(您是否阅读了消息?它解释了一切)


是的,我已经阅读了这条消息,事实上,这个错误出现在我的测试环境中,而我将在我的生产环境中执行此请求,而在该环境中我无法进行此操作。 - rym

0

如果您无法在生产环境中关闭安全更新,则需要重新设计查询,使其涉及至少一个customfieldvalue的关键列。如果没有它,您将执行表扫描;使用关键列#1,您可能会得到逻辑等效物(WHERE customfieldvalue.keycol1 IS NOT NULL),但这将满足安全更新约束。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接