场景问题: VisualVM工具Profiler JDBC不是真实执行的SQL

1. 问题

诡异的问题表象: 前端反馈分页接口的Total字段一直为0

使用Visualvm中的 Profiler 注入到应用后,查看JDBC监控得到了分页接口执行的SQL,复制出来执行是55. 此时还没有注意到 IN 的范围中有一个特别的值 'NULL' 🤨

在这里插入图片描述

2. 排查

开始查使用到的Mybatis plus分页插件是不是有bug,debug一轮发现SQL执行的结果就是0 然后才赋值给的IPage对象 😢 这下更奇怪了

重放请求,继续! 往JDBC执行SQL的入口去找,就不信是DataGrip的问题,然后在MySQL的驱动中发现 com.mysql.cj.NativeSession#execSQL 执行的SQL是 SELECT COUNT(*) ... id NOT IN (null, 128, 129) emmm 迷茫🤨

根据MySQL官方文档所描述 operator IN() 可以确认这个 id not in 子句永远会返回null 所以不会有符合条件的数据 count为0。

To comply with the SQL standard, IN() returns NULL not only if the expression on the left hand side is NULL, 
but also if no match is found in the list and one of the expressions in the list is NULL. 

好了,只要在应用代码中加个过滤空问题就解决了🤣

又是一个低级错误导致表象看起来不可思议问题的案例

问题又来了,为什么visualvm中监控到的SQL是 in ( 'NULL' ) 呢 😟

看了下这个项目大部分是Java代码,拉他代码瞅瞅,拉下来发现是古早的ant项目,emmm 在IDE中调试的想法直接放弃,转而从GUI入手, 找到这个界面对应的代码 ProfilerJDBCPanel

但是由于没构建,只能手动搜文件和字符串去找调用关系,总所周知项目中SQL的执行基本都是用PreparedStatement, 传入的只有模板和参数,真实SQL是驱动构建的,visualvm 同样要走这一步。

看了一会发现一个可疑的方法 org.graalvm.visualvm.lib.jfluid.results.jdbc.SQLStatement#getFullSql 。 通过 arthas watch 这个方法后,确认了是这里返回了错误的SQL。😓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/439129.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2834. 找出美丽数组的最小和

文章目录 [2834. 找出美丽数组的最小和](https://leetcode.cn/problems/find-the-minimum-possible-sum-of-a-beautiful-array/)思路:代码: 2834. 找出美丽数组的最小和 思路: 1.n 是数组的长度。k 是题目中的target。m 的值是通过取k / 2和…

提取pdf图档中的物料编码

一、摘要 图1 图档示例 本篇代码目的是从指定文件夹下的PDF文件中提取物料编码等相关信息,并将这些信息存储在列表中输出。这段代码主要实现了以下功能: 定义一个file_name函数,用于获取指定文件夹下所有文件的完整路径。通过遍历文件夹和子文…

UOS 与 Ubuntu 命令行打开安装包界面,双击打开界面调用安装包界面展示

UOS 使用deepin-deb-installer安装程序 deepin-deb-installer xxxxxxx.deb & Ubuntu snap-store --local-filename /home/seven/wps-office_1xxxxxxx.deb &

Android14音频进阶:AudioTrack如何拿到AudioFlinger创建的匿名共享内存(六十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

聚观早报 | 腾讯QQ测试AI对话功能;哪吒L官宣4月交付

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 3月8日消息 腾讯QQ测试AI对话功能 哪吒L官宣4月交付 中国对瑞士等6国试行免签 Redmi K70至尊版细节曝光 Meta正…

如何阅读“计算机界三大神书”之一 ——《计算机程序的构造和解释》SICP

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

git分布式管理-头歌实验冲突处理、忽略文件

一、解决冲突 任务描述 在团队协作开发过程中,可能你和团队中的其他成员,都修改了某个文件的某一部分内容,且其他成员已将该修改推送到了远程仓库。这样当你需要合并他的代码的时候,可能就会在内容上出现冲突,这个时候…

男人对年轻女人都吃不消是什么原因呢?

在这个快节奏的时代,男人与女人之间的关系变得越来越复杂。在许多情况下,男人对年轻女人都感到吃不消,这究竟是为什么呢? 首先,我们不得不承认,现代社会的价值观和审美观念发生了很大的变化。年轻女性越来越…

当GPT遇到网络安全

ChatGPT:是人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务。GPT 是 …

稀疏数组实现

博文主要是自己学习的笔记,供自己以后复习使用, 参考的主要教程是B站的 尚硅谷数据结构和算法 稀疏数组(sparse array) 实际需求:五子棋程序中的存盘退出和续上盘的功能 问题分析: 如果直接用二维数组,很多值是默认…

vue3+elementPlus:el-table-column表格列动态设置单元格颜色

:cell-style属性 //html<el-tableempty-text"暂无数据":data"datalist.table":max-height"height"row-key"id"border:cell-style"cellStyle"> <el-table>//js //动态设置单元格颜色 const cellStyle ({ row, c…

深入探索Transformer时代下的NLP革新

《基于GPT-3、ChatGPT、GPT-4等Transformer架构的自然语言处理》主要聚焦于如何使用Python编程语言以及深度学习框架如PyTorch和TensorFlow来构建、训练和调整用于自然语言处理任务的深度神经网络架构&#xff0c;特别是以Transformer为核心模型的架构。 书中详细介绍了Transf…

【Ubuntu 20.04 / 22.04 LTS】最新 esp-matter SDK 软件编译环境搭建步骤

仓库链接&#xff1a;esp-matter SDK官方软件说明&#xff1a;ESP Matter Programming Guide官方参考文档&#xff1a;使用 Matter-SDK 快速搭建 Matter 环境 (Linux) 环境要求 Ubuntu 20.04 或 Ubuntu22.04网络环境支持访问 Gihub 在安装 esp-matter SDK 软件编译环境之前&a…

day9 指针 函数封装

1&#xff1a;在主函数定义字符数组&#xff0c;在自定义函数中实现字符串比较 4 int my_strcmp(char *a,char *b);5 int main(int argc, const char *argv[])6 {7 //strcmp 函数比叫ascii码值大小8 char a[10]"hello";9 char b[10]"helloo";1…

windows环境下搭建minio分布式存储系统并通过nginx实现负载均衡

一、环境准备 windows环境下的minio可执行文件&#xff08;官网下载地址&#xff09;以及nginx&#xff08;官网下载地址&#xff09; 二、本地搭建minio集群 2.1、创建minio存储目录 如下图所示&#xff0c;在minioData目录下创建八个空文件夹 2.2、批处理文件启动mini…

义乌等保测评公司有哪些?用哪款堡垒机好?

对于义乌&#xff0c;相信大家都听过&#xff0c;也都知道&#xff0c;耳熟能详。这不有义乌小伙伴在问&#xff0c;义乌等保测评公司有哪些&#xff1f;用哪款堡垒机好&#xff1f;今天我们就来简单聊聊。 义乌等保测评公司有哪些&#xff1f; 目前浙江义乌本地暂未有正规等保…

ETL与抖音数据同步,让数据流动无阻

在当今数字化时代&#xff0c;数据的价值日益凸显&#xff0c;企业需要从各种渠道获取有关用户行为、市场趋势和竞争对手活动的数据。作为一家专注于数据集成和转换的领先平台&#xff0c;ETLCloud为企业提供了强大的数据同步和转换功能。而与此同时&#xff0c;抖音作为一款热…

多模态融合技术升级!新阶段2大融合模式取得最优性能

传统的多模态融合方法面临着模态表示不一致、灵活性不足等问题&#xff0c;难以适应日益复杂的实际需求。 而随着大模型等新技术的发展&#xff0c;研究者将这些新技术与传统的多模态融合相结合&#xff0c;提出了新阶段的融合模式&#xff0c;包括多模态大模型时代的新架构、…

构建高效Web应用:Flask、Django和FastAPI的全面对比

构建高效Web应用&#xff1a;Flask、Django和FastAPI的全面对比 介绍Flask简介快速入门路由和视图函数模板渲染数据库操作Flask项目实战 Django简介快速入门模型和数据库视图和模板表单处理Django项目实战 FastAPI简介快速入门路径操作和参数请求和响应依赖注入FastAPI项目实战…

基于协同过滤的旅游推荐系统设计与实现

基于协同过滤的旅游推荐系统设计与实现 在当今旅游业蓬勃发展的背景下&#xff0c;人们对于旅游体验的需求日益增加&#xff0c;如何为用户提供更加个性化、精准的旅游推荐成为了旅游行业的一个重要课题。为解决这一问题&#xff0c;我们设计并实现了一个基于协同过滤的旅游推…