当前位置: 首页 > 知识库问答 >
问题:

为什么MySQL安全更新模式不允许LIKE谓词?

范瀚昂
2023-03-14
    null
DELETE FROM actor WHERE last_name = 'foo';
DELETE FROM actor WHERE last_name LIKE '%fo' OR last_name LIKE 'fo%';

错误代码:1175。您使用的是安全更新模式,并且试图更新一个没有使用键列的WHERE的表。要禁用安全模式,请在Preferences->SQL Editor中切换该选项并重新连接。

为什么安全更新模式停止第二个命令而允许第一个命令?

共有1个答案

董光霁
2023-03-14

根据文件:

即使在WHERE子句中指定了键,如果优化器决定不对键列使用索引,UPDATE和DELETE语句也可能在safe-updates模式下产生错误。

(像'fo%')这样的测试通常会使用索引(索引可以用来匹配列的开头),所以它不应该导致错误。但是像这样的测试(如“%fo”)不能被索引(它没有指定列的开头,因此必须进行完整扫描),因此您会得到一个错误。

 类似资料:
  • 但我又被1175错误阻塞了。 为什么安全更新模式在这里阻止我?我可以在不禁用安全更新模式的情况下解决它吗?

  • 问题内容: W3指定表列(带有元素)仅允许使用四个CSS规则- 边框,背景,宽度和可见性。 有人知道这个决定的原因吗?如果可以使用边框和背景,为什么不使用字体和颜色呢? 问题答案: IanHixie在这里详细解释:为什么只有四个属性应用于表列的奥秘。相关报价: 文本的颜色取决于其元素的“颜色”属性。除非指定,否则“ color”属性(基本上)默认为“ inherit”,这意味着“采用父元素的值”。

  • 问题内容: 通常,Java可被视为类型安全的语言。我知道泛型有一些缺陷,但是最近我遇到了一个从未有过的问题。分解: 不会导致预期的编译时错误。我假设Array的声明将不允许指向其他数组。在泛型中,我不允许做类似以下这样的怪异的事情: 如果我尝试诱使Java做一些事情 可以声明它,但只能添加type的对象。 Java为什么不阻止声明这种奇怪的数组? 问题答案: 我认为除了“传统设计”之外,没有其他答

  • 问题内容: 我试图获取我的Layout 以适合我要移植到Java的程序的外观,在此之前,我已经使用了多个LayoutManager并获得了巨大的成功,但是由于某些原因,我似乎无法获得此布局都在工作。我的目标是有权利(东)侧的包含一个“查找下一个”和自上而下的命令“取消”按钮,然后在下面的任何额外的空间,从而使两个按钮总是在的顶部,但由于某种原因,它会不断忽略更改a宽度的任何尝试(这是我迷失的地方)

  • 谁说可信赖的 API 必须通过 HTTP 补丁单独支持部分更新? 它似乎没有任何好处。它增加了在服务器端实现的更多工作,以及在客户端实现的更多逻辑,以决定请求哪种更新。 我是在使用HTTP创建一个RESTAPI的上下文中问这个问题的,这个RESTAPI提供了对已知数据模型的抽象。要求PATCH进行部分更新,而不是要求PUT进行全部或部分更新,这似乎没有任何好处,但我可以被说服。 相关的 http:

  • 问题内容: 我读了这个问题,并认为如果可以写的话,很容易解决(不是没有它就不能解决): 我不确定在很多情况下它是否有用,但是我想知道为什么它没有用,以及其他语言中是否存在类似的东西。 你们有什么感想? 编辑: 澄清一下:是的,我知道,这在Java中是不可能的,我也不是很想念它。这不是我期望的工作,并且惊讶于出现编译器错误。我只是有这个主意,喜欢讨论它。 问题答案: 它违反了封装。你不应该能够绕过父