温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MySQL ERROR 1175 安全模式UPDATE/DELETE操作失败怎么办

发布时间:2021-10-25 15:56:57 来源:亿速云 阅读:286 作者:柒染 栏目:MySQL数据库

这期内容当中小编将会给大家带来有关MySQL ERROR 1175 安全模式UPDATE/DELETE操作失败怎么办,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

在做某些update 或者 delete操作时,会报错:
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
大致意思是,使用了安全模式下,尝试使用update(delete)操作表时,没有在where条件里写有key的列。


比如,某张表有两个字段,其中col_1为主键,以下操作都是被禁止的:

  1. DELETE FROM table_name;

  2. DELETE FROM table_name LIMIT 5;

  3. DELETE FROM table_Name WHERE col_2=0;

  4. UPDATE table_name SET col_1=0;

  5. UPDATE table_name SET col_1=0 WHERE col_2=0;


【解决方案】:
要么禁用这个安全模式,要么按要求写sql即可解决这个问题:

〇 禁用对应安全模式:
实际上是开启了sql_safe_updates这个参数导致的,可以检查一下该参数:

  1. mysql> SELECT @@sql_safe_updates;

  2. +--------------------+

  3. | @@sql_safe_updates |

  4. +--------------------+

  5. | 1                  |

  6. +--------------------+

  7. 1 row in set (0.00 sec)

如果临时禁用,可以直接动态修改会话级别的模式:

  1. mysql> SET sql_safe_updates=0;

  2. Query OK, 0 rows affected (0.00 sec)


如果永久修改,则需要在my.cnf中做修改:
将[mysql]下的safe-updates参数注释或者删掉,重新通过client登录mysql-server即可。



〇 修改sql
在sql_safe_updates开启的情况下,如果需要使用update/delete操作一张表,必须满足一下条件之一:
在DELETE操作里:
① 需要在where中写明有key的列的条件,比如此处可以是WHERE col_1=0;(col_1为主键)。
或者
② 需要在where中写名其他非key列的条件,并且加上limit限制

在UPDATE操作里:
① 需要指定limit限制
或者
② 需要在where中写明有key的列的条件
或者
③ 需要在where中写名其他非key列的条件,并且加上limit限制


上述就是小编为大家分享的MySQL ERROR 1175 安全模式UPDATE/DELETE操作失败怎么办了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI