• ADADADADAD

    MySQL ERROR 1175 安全模式UPDATE/DELETE操作失败怎么办[ mysql数据库 ]

    mysql数据库 时间:2024-11-26 22:17:50

    作者:文/会员上传

    简介:

    在做某些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

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    在做某些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为主键,以下操作都是被禁止的:

      DELETE FROM table_name;

      DELETE FROM table_name LIMIT 5;

      DELETE FROM table_Name WHERE col_2=0;

      UPDATE table_name SET col_1=0;

      UPDATE table_name SET col_1=0 WHERE col_2=0;


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

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

      mysql> SELECT @@sql_safe_updates;

      +--------------------+

      | @@sql_safe_updates |

      +--------------------+

      | 1 |

      +--------------------+

      1 row in set (0.00 sec)

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

      mysql> SET sql_safe_updates=0;

      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操作失败怎么办.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlupdatedelete