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

如何避免MySQL工作台错误代码:1175在此更新期间*没有*禁用“安全更新”

侯博易
2023-03-14

我有一个特定的MySQLupdate语句,它确实在其where子句中指定了所需的主键,但在MySQL工作台中运行时仍然产生错误1175。

在MySQL工作台更新期间,我完全知道MySQL错误代码:1175。我的情况似乎与更新期间的MySQL错误代码:1175相同(MySQL-Workbench vs.console)。与提问者一样,我不希望禁用MySQL-Workbench的“安全更新/删除”选项。那个问题没有得到解决。我想试着找到一个实际的解决办法。

SQLupdate语句:

--从`charges_arc`update`charges`INNER JOIN`charges_arc`ON`charges`.`chargeId`=`charges_arc`.`chargeId`SET`charges`.`chargeLeardate`WHERE`charges`.`chargeId`=`charges_arc`.`chargeId`;

chargeID确实是chargecharges_arc表中的主键列。

这意味着该语句确实满足了MySQL工作台的https://dev.MySQL.com/doc/workbench/en/workbench-faq.html#faq-workbench-delete-safe:

默认情况下,Workbench被配置为不执行不包含键列上WHERE子句的DELETE或UPDATE查询。

是否有解决方案重写此查询,使工作台不会出现错误1175,并且不需要设置set sql_safe_updates=0/更改工作台的首选项?

共有1个答案

薄瑞
2023-03-14

好吧,玩得更远了,到目前为止,我发现以下这些似乎让Workbench很开心:

--从`charges_arc`update`charges`INNER JOIN`charges_arc`.`chargeid`SET`charges`.`chargeLeardate`=`charges_arc`.`chargeLeardate`WHERE`charges`.`chargeId`和`charges`.`chargeId`<>-9999中相应行更新新列的值

就我自己而言,我在一个大的升级脚本文件中有很多这类的update,这在我看来太难看了,我最终可能会在整个文件上使用setsql_safe_updates=0...

Edit:最后,我决定必须向这些类型的更新...JOIN...添加类似上面额外的子句的东西,这实在是太难看了,因此我倾向于在它们周围设置SQL_SAFE_UPDATES=0至少为了清楚起见。

 类似资料:
  • 本文向大家介绍MySQL 错误代码1175:安全更新,包括了MySQL 错误代码1175:安全更新的使用技巧和注意事项,需要的朋友参考一下 示例 尝试更新或删除记录而不包括WHERE使用该KEY列的子句时出现此错误。 要执行删除或更新-输入: 要再次启用安全模式,请输入:            

  • 我非常清楚这个问题可以通过禁用安全更新模式来解决(例如,请参见此处:在MySQL工作台中更新期间的MySQL错误代码:1175)。但是,我不希望禁用安全更新模式(有很多很多解决方案提出了这一点)。 类似地,我知道将WHERE子句设置为匹配所有内容的KEY-value应该会起作用。但在mysql-workbench上似乎并不起作用--至少不是我希望的那样(或它在控制台上的工作方式)。 例如,以下操作

  • 我试图从交易编号相同的<code>包 错误代码:1175。您使用的是安全更新模式,并且您试图更新一个没有WHERE的表,该表使用了键列。要禁用安全模式,请在首选项中切换该选项- 下面是命令: 我认为我正在使用一个,其中使用了一个键列(< code>transactionNo是< code>Payment的主键)。我是不是写错了?

  • 我试图更新一个列,但在更新过程中总是有相同的错误,如果我不想禁用“安全更新模式”,我该如何解决这个问题?这是我的查询 错误代码:1175。您使用的是安全更新模式,并且您试图更新一个没有使用键列禁用安全模式的表,请在“首选项”中切换该选项-

  • 我想使用MySQL5.7和MySQL Workbench6.2在表中插入一些行。当我尝试它时,我得到了错误1175(在安全更新模式下没有WHERE的更新)

  • 21:17:21 update DEPT_DUP set dept_name=null,其中dept_no='D010'错误代码:1175。您使用的是安全更新模式,并且试图更新一个没有使用键列的WHERE的表。要禁用安全模式,请在Preferences->SQL Editor中切换该选项并重新连接。0.000秒 在错误信息中,它给了我路径,但我无法理解在哪里重新连接?