› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
duanzs
V2EX  ›  MySQL

mybatis 如何拦截空 where 条件的 sql

  •  1
     
  •   duanzs · Dec 21, 2020 · 5253 views
    This topic created in 2146 days ago, the information mentioned may be changed or developed.

    最近线上出了个事故,一个极端数据跑了个 sql,没有 where 条件,导致全表更新(泪啊) 我记得 mybatis 可以弄个拦截器,具体怎么搞呢

    21 replies  •  2020-12-22 14:06:21 +08:00
    kiracyan
    kiracyan
    Dec 21, 2020
    1
    还有这种操作
    anzu
    anzu
    Dec 21, 2020
    2
    不要用<where>标签
    duanzs
    duanzs
    OP
    Dec 21, 2020
    5
    @anzu 这个还是要靠人来控制

    @kran 没用这个
    qwerthhusn
    qwerthhusn
    Dec 21, 2020
    6
    测试背锅
    taogen
    taogen
    Dec 21, 2020 via Android
    7
    和 rm -rf / 问题类似,这种问题确实需要拦截
    FieldFarmer
    FieldFarmer
    Dec 21, 2020 via Android
    8
    直接来个 where,不要<where>,这样没条件就会报错了
    Cbdy
    Cbdy
    Dec 21, 2020 via Android
    9
    让 dba 把 sql_safe_updates 设置成 1
    moyixuan
    moyixuan
    Dec 21, 2020
    10
    后面写个 where 1=1 ,这样没有传条件应该也不起效果吧
    FieldFarmer
    FieldFarmer
    Dec 21, 2020 via Android
    11
    @moyixuan 这样没用的,没条件该全表更新还是全表更新了
    leeg810312
    leeg810312
    Dec 21, 2020 via Android
    12
    生产库执行 sql 我们都是要审核才能执行,且开发不能直接碰生产库,随便执行 sql 还是太随意了
    vvvVictoria
    vvvVictoria
    Dec 21, 2020
    13
    没测试?
    wellsc
    wellsc
    Dec 21, 2020 via iPhone
    14
    Ci 都跑不过吧
    opengps
    opengps
    Dec 21, 2020
    15
    为啥会没有条件呢?更新时候不得强制指定 where 条件吗?
    opengps
    opengps
    Dec 21, 2020
    16
    想起来个事,以前配置的时候有个极端,如果入参集合为空,where 里的 id in ( ) 不生效。最终是全员自检排查 dao 层代码,增加程序拦截
    lraining
    lraining
    Dec 21, 2020
    17
    只有 select 可以用<where>,update,delete 全部用 where
    daxiguaya
    daxiguaya
    Dec 21, 2020
    18
    写个拦截器,用 jsqlparser 解析 SQL,剩下的想怎么限制都行.
    duanzs
    duanzs
    OP
    Dec 22, 2020
    19
    @opengps 我们就是这个问题
    opengps
    opengps
    Dec 22, 2020
    20
    @duanzs 如果不从程序 dao 层处理,那就得把 where 强制要求写上个 where 1=2 or (真实条件)
    Masonnn
    Masonnn
    Dec 22, 2020
    21
    <if test="param != null">
    xxxxxx
    </if>
    这样?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1356 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 17:11 · PVG 01:11 · LAX 09:11 · JFK 12:11
    ♥ Do have faith in what you're doing.