MySQL的执行语句查询

  其它组里的同学今天遇到一个难题,使用typeorm过程中insert时而生效,时而无效。他怀疑是这个orm没有提交事务,但是对这个问题不知道该怎么进行验证。

  本身对这个框架,并没有过了解。并且由于业务的复杂性,这个问题出现的原因可能性很多。比如数据其实插入了,但是由于某个原因回滚了;也可能如他所说,事务没有提交;也有可能这里是插入成功了,但是由于系统bug又被其它的接口删除了。总之要从代码去排查,一时半会儿还没有什么思路。

  但有一点,他的系统使用的是MySQL数据库,虽然不能准确定位bug点,但是可以将它的问题缩小一定范围,引导他找到一个正确的解决方向。我们可以设置MySQL的执行日志,然后在调试时,查看这个时刻的语句执行情况,这样就能在MySQL服务端,准确把握到底是没有插入语句,还是插入了之后又被删除了。

  1.现在Linux环境下,设置日志:

mysql> set global log_output=TABLE;set global general_log=ON;

Query OK,
0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec)

  2.开启MySQL客户端*(如Navicat,也可以在Linux开启的客户端中查看,但不方便):

SELECT event_time,CONVERT(argument USING utf8) FROM `general_log` ORDER BY event_time DESC;

#这里的argument是blob类型的数据,需要进行转换才能方便查看

  3.此时可以让该同学调试他的接口,在调试过程中,执行一次接口的逻辑,一边在Navicat中执行上述语句,就能够把握执行SQL语句的情况:

MySQL的执行语句查询

  此时,我们可以一边调试接口,一边查看sql语句的情况。帮助我们定位代码中的逻辑问题。

 

 

 

 

 

 

MySQL的执行语句查询

上一篇:肖sir __高级讲师___app测试中IOS和Android测试的区别


下一篇:大数据快速的上传SQL数据库