问题现状

MyBatis - 一旦执行到打印日志 Parameter 就卡死的原因探索_sql

如图所是,就执行到这,直接二话不说——卡死,按理说要给我一个“影响了多少行”类似的日志,结果并没有,于是开始分析~

猜想一

  • Q:是不是数据量太大,卡死了?
  • A:发现其他接口连接同一个数据库,可以正常操作

猜想二

  • Q:是不是哪里 SQL 语法错误?
  • A:发现其他环境针对同一个业务情景,数据都没变的情况下,居然能操作数据库成功

猜想三

  • Q:通过分析源码发现最终生成的 SQL(带一些换行、回车等)直接执行呢?
  • A:还是有问题,不过去除这些不可见字符后,居然成功!!!你以为就找到线索了吗?以为是不可见字符引起的某些 MyBatis Bug?还是太年轻了!如果真是这样的话,为啥另一个环境在控制变量的情况下,能正常通过!难不成 Bug 还有随机性?

最终 Boss

首先经过猜想三,排除 MyBatis 的 Bug 先,那么牛逼的框架,作者不至于犯这么低级错误,那就还是哪里有问题呗,再仔细和那个 OK 的环境对比,发现走的网络不一样,于是,用纯粹的手机热点试试,不走公司的各种复杂网络,发现秒过!后来一探究竟,发现是公司搭建的网络中,转发估计有一些包字节限制,我也是醉了!