发动态
综合 最新发布 最新回复
图文
列表
很多小伙伴看到了能够快速发现问题,当 company_id 为 null 的时候,会导致全表更新。但是也有小伙伴不解,自己平时就是这么写的呀,也没什么问题,如果有问题,那么上面的 SQL 该怎么改呢?松哥来和大家简单聊几句。一 防止全表更新如果在生产环境中使用 UPDATE 语句更新表数据,此时如果忘记携带本应该添加的 WHERE 条件,那么后果不堪设想。那么怎么避免这个问题呢?二 sql_safe_updatessql_safe_updates 是 MySQL 数据库中的一个参数,它的作用是增强数据安全性,防止因误操作导致的数据丢失或破坏。具体来说,当 sql_safe_updates 设置为 ON(启用)时,MySQL 将阻止执行没有明确 WHERE 子句的 UPDATE 或 DELETE 语句。这意味着如果试图运行一个不包含 WHERE 条件来限定更新或删除范围的 DML 语句,MySQL 会抛出一个错误。而当 sql_safe_updates 设置为 OFF(禁用)时,MySQL 不会对此类无条件更新或删除操作进行特殊限制,允许它们按常规方式执行这个参数可以配置在会话级别或全局级别。在会话级别,可以通过执行 SET sql_safe_updates = 1; 命令来启用,这只对当前连接有效。在全局级别,可以通过 SET GLOBAL sql_safe_updates = 1; 命令或在 MySQL 配置文件中设置,这会影响服务器上所有新的会话,但是这个配置不会修改当前会话。启用 sql_safe_updates 参数可以减少因人为失误引发的重大数据事故,尤其适合开发环境和对数据完整性要求严格的生产环境。我们可以先执行 SHOW VARIABLES LIKE '%sql_safe_updates%'; 查看当前配置:然后执行 SET sql_safe_updates = 1; 去更新,更新之后再去查看配置,发现 sql_safe_updates 就已经开启了:这个时候,假设我们执行如下 SQL: UPDATE user set username='javaboy'; 就会报一个错误:需要注意的是,启用 sql_safe_updates 参数可能会影响现有应用程序的正常运行,特别是那些依赖于无条件更新或删除操作的程序,因此在生产环境中启用之前,必须确保所有相关的应用程序代码已经过严格审查和适配。顺便吆喝一句,技术大厂,前后端测试[捞人][捞人],待遇还可以,感兴趣可以试试。三 SQL 插件MyBatis-Plus 提供了一个非法 SQL 拦截插件叫做 IllegalSQLInnerInterceptor。这是 MyBatis-Plus 框架中的一个安全控制插件,用于拦截和检查非法 SQL 语句。这个插件主要提供了四方面的功能:识别并拦截特定类型的 SQL 语句,如全表更新、删除等高风险操作。确保在执行查询时使用索引,以提高性能并避免全表扫描。防止未经授权的全表更新或删除操作,减少数据丢失风险。对包含 not、or 关键字或子查询的 SQL 语句进行额外检查,以防止逻辑错误或性能问题。插件用法也简单,配置一个 Bean 即可: @Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 添加非法SQL拦截器 interceptor.addInnerInterceptor(new IllegalSQLInnerInterceptor()); return interceptor; } } 配置完成后,如果执行了不带 where 条件的 update 或者 delete 语句,就会报如下错误。但是!!!如果你的 SQL 后面有个 where 1=1,那么这样的 SQL 是不会被 IllegalSQLInnerInterceptor 插件识别并拦截的。四 IDEA 插件利用 IDEA 的一些插件,也可以检测到有风险的 SQL,比如松哥常用的这个:不过这些插件不一定能检测出来文章一开始所提出的问题。五 Code Review日常的 Code Review 也不可少,很多问题都是在 CR 的时候发现的。六 问题解决除了上面提到的各种办法之外,对于本文一开始提出的问题,这个有问题的 SQL 还可以做哪些修改呢?欢迎小伙伴们评论区给出自己的答案~松哥也会在评论区给出我的看法!——转载自:江南一点雨#畅聊专区#
这样的SQL太吓人了
开源硬件平台
2.54接口座子相关问题探讨
是这样,我踩坑了。图2是之前一直用的2p插件座子,然后换成贴片的座子后,正负极就反了。仔细对比了封装后发现原来是因为这两款座子的开口方向是上下颠倒的,也就是说对接的公头线缆由图一的座子切换给图2的座子用的时候要切换180度的方向,这样正负就颠倒了。 那么我这次的解决方案就是把公头线缆退针重装处理了。但我想因为都是标准的XH座子,没有没必要再绘制封装的时候进行颠倒呢?就比如图二是常用的座子,那就以它为标准,为了兼容它,就把图一座子的一脚和二脚颠倒一下[呲牙] 关于这个问题,大家有什么看法,或者有什么办法不踩坑[尴尬]
嘉立创EDA
TO-247场管和散热器之间距离怎样放置更合适?图中左边的还是右边的?
嘉立创EDA
大师们,像这样散热器下面有不同网络的铺铜,会不会有短路风险?
嘉立创EDA
过孔孔边距离同网络贴片焊盘距离?
嘉立创PCB
电蚊拍电路
哪位老铁研究过电蚊拍的升压电路呢?
嘉立创PCB
关于自动布线的问题
昨天在布线时,想偷懒,在把主要布线及规则设定好后,等待自动布线完成,发现手动布线部分也被重新覆盖上一条细线(原是粗的电源线)。
嘉立创EDA
#嘉立创3D打印# 我的打印头壳到啦!!!!
硬创社
请问为什么把STM32F103C8T6代码移植给M0MSPG3507会出现这些问题啊?我都是一步一步来的[大哭]求大佬帮忙解释
硬创社
这个资料在哪里啊,没找到,这是嘉楠ai训练给的文档提示 #K230#
硬创社
收到来自远方的来信——好久没看到手写的文稿了,看来大家感触满满,收获满满!属实是走心了! [玫瑰][玫瑰][玫瑰][握手][握手][握手]
走进工厂
最近有MP6908设计了一个整流电路,不知道为什么不工作,VDD有9V电压,MOS管栅极没有电压输出。请路过的高手帮看看。
开源硬件平台
开源文章:江南大学25年第一次培训\n\n简介:本文章记录江南大学2025学年第一次培训,得益于嘉立创的支持,我校此次培训圆满结束。此次培训内容为大功率DC-AC逆变电路。\n\n文章链接:[https://oshwhub.com/article/jiangnan-university-25-years-the-first-training]\n#高校动态#
开源硬件平台
618嗨购节
家人们,现在是不是金豆拼团是不是逐渐没有实物了。我之前忘记抢背包了,现在每天都在等背包。但发现好像7天拼团实物越来越少,如果真的没有实物了就整点优惠价打板用[呲牙][呲牙]
立创商城
Gerber文档如何转成PCB? #嘉立创PCB#
嘉立创PCB
社区数据
今日帖子
-
今日互动量
-
在线人数
-
帖子总量
-
用户总量
-
推荐话题 换一批
#嘉立创PCB#
#DIY设计#
#嘉立创3D打印#
#畅聊专区#
#嘉立创免费3D打印#
#创享2025#
#618金豆嗨购节#
#高校动态#
查看更多热门话题
功能讨论
()
主题
打赏记录
粤公网安备44030002004666号 · 粤ICP备2023121300号 · 用户协议 · 隐私政策 · 侵权举报 · ISO/IEC · Copyright © 2024 嘉立创社区版权所有
服务时间:周一至周六 9::00-18:00 · 联系地址:中国·深圳(福田区商报路奥林匹克大厦27楼) · 媒体沟通:pr@jlc.com · 集团介绍
移动社区