问题描述
|
我有一个我无法执行的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
解决方法
要仅针对当前会话运行禁用它:
SET SQL_SAFE_UPDATES=0;
, 要解决此问题:
禁用安全模式:
切换“首选项”->“ SQL编辑器”->“查询编辑器”中的选项,然后重新连接。
原因:
您正在使用安全更新模式,并且试图在没有使用KEY列的WHERE的情况下更新表
(您读过消息吗?它解释了所有内容)
, 如果您无法关闭生产环境中的安全更新,则需要对查询进行重新处理以使ѭ2key中至少包含一个关键列。没有它,您将执行表扫描。使用键列#1,您可能会得到逻辑等效项((3ѭ),但这将满足安全更新约束。
, 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);