zoukankan      html  css  js  c++  java
  • 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语句的情况:

      此时,可以根据语句的执行情况,判断代码中的问题到底是出在哪里。虽然不能完全定位,但是缩小了范围之后,排查起来应该会省力很多。

  • 相关阅读:
    [SpringCloud] Hystrix原理及应用
    Excel框设置下拉选项
    The program no longer exists.
    win10 指纹登录修改用户密码
    git 比较两个分支内容差异
    C++ 已知两个时间(年月日)求日期差
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解(SQL数据库和Oracle数据库的区别)
    SQL Server查询优化方法
    xshell连接ubuntu虚拟机的方法
    beyond compare添加Java反编译插件
  • 原文地址:https://www.cnblogs.com/bruceChan0018/p/14984071.html
Copyright © 2011-2022 走看看