最近线上出了个事故,一个极端数据跑了个 sql,没有 where 条件,导致全表更新(泪啊) 我记得 mybatis 可以弄个拦截器,具体怎么搞呢
最近线上出了个事故,一个极端数据跑了个 sql,没有 where 条件,导致全表更新(泪啊) 我记得 mybatis 可以弄个拦截器,具体怎么搞呢
|
kiracyanDec 21, 2020
1
还有这种操作
|
|
anzuDec 21, 2020
2
不要用<where>标签
|
|
kranDec 21, 2020 via Android
3
|
|
AcebiuDec 21, 2020
4
可以参照 Mybatis-PageHelper 的拦截器直接写一个。
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/src/main/java/com/github/pagehelper/PageInterceptor.java |
|
qwerthhusnDec 21, 2020
6
测试背锅
|
|
taogenDec 21, 2020 via Android
7
和 rm -rf / 问题类似,这种问题确实需要拦截
|
|
FieldFarmerDec 21, 2020 via Android
8
直接来个 where,不要<where>,这样没条件就会报错了
|
|
CbdyDec 21, 2020 via Android
9
让 dba 把 sql_safe_updates 设置成 1
|
|
moyixuanDec 21, 2020
10
后面写个 where 1=1 ,这样没有传条件应该也不起效果吧
|
|
FieldFarmerDec 21, 2020 via Android
11
@moyixuan 这样没用的,没条件该全表更新还是全表更新了
|
|
leeg810312Dec 21, 2020 via Android
12
生产库执行 sql 我们都是要审核才能执行,且开发不能直接碰生产库,随便执行 sql 还是太随意了
|
|
vvvVictoriaDec 21, 2020
13
没测试?
|
|
wellscDec 21, 2020 via iPhone
14
Ci 都跑不过吧
|
|
opengpsDec 21, 2020
15
为啥会没有条件呢?更新时候不得强制指定 where 条件吗?
|
|
opengpsDec 21, 2020
16
想起来个事,以前配置的时候有个极端,如果入参集合为空,where 里的 id in ( ) 不生效。最终是全员自检排查 dao 层代码,增加程序拦截
|
|
lrainingDec 21, 2020
17
只有 select 可以用<where>,update,delete 全部用 where
|
|
daxiguayaDec 21, 2020
18
写个拦截器,用 jsqlparser 解析 SQL,剩下的想怎么限制都行.
|
|
MasonnnDec 22, 2020
21
<if test="param != null">
xxxxxx </if> 这样? |