1、问题发现
今天收到一朋友反馈,发现执行一个存储过程后,整个表数据都没有了。
我让朋友把存储过程发过来我查一下,结果存储过程好长好几百行,短时间没有发现原因,结果朋友自己从阿里的审计日志发现了问题。
2、问现复现
做一个极简例子即可复现此问题
--构造测试数据 创建一个表,并插入5行
create table t
(id int);
insert into t
values(1),(3),(4),(5),(6);
复制
此时查询t表 有5行记录
编写存储过程 根据参数删除其中一行记录
drop procedure if exists sp1 ;
delimiter ;;
CREATE PROCEDURE sp1 (id bigint)
BEGIN
SET @id = id;
delete from t where id = @id ;
END ;;
delimiter ;
复制
调用存储过程 删除指id = 1 的那一行
call sp1(1);
复制
执行后 再查询,发现t表为空了
看到这里的朋友发现问题在哪里了吗?
3、分析问题
想弄明白为什么会这样,我就想那看存储过程内的语句变成什么样了就知道了
a、第一种方法 查看全量日志
set global general_log=1;
show variables like '%general_log%';
复制
发现全量日志中记载的是 call sp(1) 这个语句
b、第二种方法 查看慢日志
在delete 后 加一个sleep 构造慢SQL
set global slow_query_log=on;
show variables like 'slow_query_log_file';
复制
发现慢日志中记载的也是 call sp(1) 这个语句
c、第三种方法 查看binlog日志
SET SESSION binlog_format = 'STATEMENT';
show master status;
show binlog events in 'LAPTOP-MT6UTC5I-bin.000072';
复制
至此真相大白了。原来where 1=1 永远为真了。
4、分析根因
存储过程或函数内的变量优先级最高,当和表的列名冲突时,会优先认为是局部变量以前写过一篇MySQL变量的文章 有兴趣的可以点这传送
最后修改时间:2024-10-14 17:45:28
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论

4月前

评论
小心这种写法真会删库跑路
5月前

评论
一个人的孤独不是孤独,一个人找另一个人,一句话找另一句话,才是真正的孤独。
6月前

评论
正确地管理精力与时间,学会适时休息,是一种智慧。
6月前

评论
小心这种写法真会删库跑路,你的工资怕不够赔!!!
6月前

评论
小心这种写法真会删库跑路,你的工资怕不够赔!!!
6月前

评论
相关阅读
2025年3月中国数据库排行榜:PolarDB夺魁傲群雄,GoldenDB晋位入三强
墨天轮编辑部
1637次阅读
2025-03-11 17:13:58
【专家观点】罗敏:从理论到真实SQL,感受DeepSeek如何做性能优化
墨天轮编辑部
1238次阅读
2025-03-06 16:45:38
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1216次阅读
2025-03-13 11:40:53
01. HarmonyOS Next应用开发实践与技术解析
若城
1177次阅读
2025-03-04 21:06:20
DeepSeek R1助力,腾讯AI代码助手解锁音乐创作新
若城
1161次阅读
2025-03-05 09:05:00
03 HarmonyOS Next仪表盘案例详解(二):进阶篇
若城
1159次阅读
2025-03-04 21:08:36
05 HarmonyOS NEXT高效编程秘籍:Arkts函数调用与声明优化深度解析
若城
1151次阅读
2025-03-04 22:46:06
04 高效HarmonyOS NEXT编程:ArkTS数据结构优化与属性访问最佳实践
若城
1141次阅读
2025-03-04 21:09:35
02 HarmonyOS Next仪表盘案例详解(一):基础篇
若城
1138次阅读
2025-03-04 21:07:43
06 HarmonyOS Next性能优化之LazyForEach 列表渲染基础与实现详解 (一)
若城
1130次阅读
2025-03-05 21:09:40