授人以鱼不如授人以渔,上出错图
DataIntegrityViolationException MysqlDataTruncation异常
一般的,出错分析都是从下而上分析的,到最上一层通常是把错误指向最下面的cause
控制面板输出记录是这样的:

The error may exist in file [***/***.xml]
The error may involve defaultParameterMap
The error occurred while setting parameters
SQL: insert into sys_logs (username,method,params) values (?,?,?)

说实话:这错误可能在对应的xml文件中,也只是可能,我这sql不存在有错啊,怎么会报错呢?绞尽脑汁也想不出来错误在哪里。

一般的,最后一个cause,会指向错误原因,这里我写了一个全局异常处理类;
DataIntegrityViolationException MysqlDataTruncation异常
点过去,会发现
DataIntegrityViolationException MysqlDataTruncation异常
分析around方法这说明,saveLog(),方法内部有问题,但是呢,怎么检查,加断点,都找不出saveLog方法内部的问题;上面说了,看错得看最下面的一个cause,他一般指向错误的根源,上图:
DataIntegrityViolationException MysqlDataTruncation异常
这错误定位在数据库,username太长,被截断了;而我们又将错误定位在saveLog方法内部,所以,错误只有一个地方,上图:
DataIntegrityViolationException MysqlDataTruncation异常
最终定位到往数据库存储的地方,原来是设置username,参数应该是user.getUserName(),而不是user.toString();

相关文章:

  • 2021-07-01
  • 2022-12-23
  • 2021-06-13
  • 2021-07-06
  • 2021-12-05
  • 2021-09-04
  • 2022-02-26
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-19
  • 2022-02-05
  • 2021-04-29
  • 2021-10-23
  • 2021-12-07
相关资源
相似解决方案