推特 阿里云技术文档正文

高危类 SQL 自动保护_系统运维_用户指南_分布式关系型数据库 DRDS

admin 阿里云技术文档 2020-02-11 205 0
阿里云服务器优惠

高危类 SQL 自动保护

为了防止误操作,DRDS 默认禁止全表删除和全表更新的操作。

下列语句默认会被禁止:

  1. DELETE 语句不带 WHERE 条件或者 LIMIT 条件;
  2. UPDATE 语句不带 WHERE 条件或者 LIMIT 条件。

如果确实需要执行这类操作,可以通过 HINT 来临时跳过这个限制:HINT:/!TDDL:FORBID_EXECUTE_DML_ALL=false*/

示例

  1. 执行全表删除默认会被拦截:

    1. mysql> delete from tt;
    2. ERR-CODE: [TDDL-4620][ERR_FORBID_EXECUTE_DML_ALL] Forbid execute DELETE ALL or UPDATE ALL sql. More: [http://middleware.alibaba-inc.com/faq/faqByFaqCode.html?faqCode=TDDL-4620]

    加 HINT 则可执行成功:

    1. mysql> /!TDDL:FORBID_EXECUTE_DML_ALL=false*/delete from tt;
    2. Query OK, 10 row affected (0.21 sec)
  2. 执行全表更新默认会被拦截:

    1. mysql> update tt set id = 1;
    2. ERR-CODE: [TDDL-4620][ERR_FORBID_EXECUTE_DML_ALL] Forbid execute DELETE ALL or UPDATE ALL sql. More: [http://middleware.alibaba-inc.com/faq/faqByFaqCode.html?faqCode=TDDL-4620]

    加 HINT 则可执行成功:

    1. mysql> /!TDDL:FORBID_EXECUTE_DML_ALL=false*/update tt set id = 1;
    2. Query OK, 10 row affected (0.21 sec)
  3. DELETE 或者 UPDATE 语句中带有 WHERE 或者 LIMIT 条件,不会出现这个限制。

    1. mysql> delete from tt where id = 1;
    2. Query OK, 1 row affected (0.21 sec)
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论

-----