异常排查:lineNumber: 1; columnNumber: 590; 元素内容必须由格式正确的字符数据或标记组成。

文章目录

今天应用服务启动式,出现一个异常lineNumber: 1; columnNumber: 589; 元素内容必须由格式正确的字符数据或标记组成。,经过一步步排查总算解决问题了。

异常排查

应用服务启动时,堆栈如下:
在这里插入图片描述

从堆栈我们可以发现JobPoolDeliveryMapper 这个类中xml中有不符合xml的语法错误。然后我们把断点设置到这个org.apache.ibatis.parsing.XPathParser#createDocument 这个方法中,断点如下,然后重新启动应用服务发现堆栈。
在这里插入图片描述
从异常信息中我们发现异常引起的动态SQL如下:
在这里插入图片描述
然后如上图,找到这个str字符串,找到字符,展开找到590个字符,发现在 <> 附近引起。
在这里插入图片描述
这时候我们找到原始的SQL

@Select("<script>" +
            " select count(*) totalMatchCount " +
            " ,sum(case when delivery_tag = 2 and confirm_tag =1 then 1 else 0 end) + sum(case when confirm_tag = 2 and charge_type = 1 then 1 else 0 end) currentTaskCount " +
            " ,sum(case when delivery_tag = 2 and confirm_tag =1 then 1 else 0 end) deliveryMatchCount " +
            " ,sum(case when confirm_tag = 2 then 1 else 0 end) confirmCount " +
            " ,sum(case when confirm_tag = 2 and charge_type = 1 then 1 else 0 end) freeConfirmCount " +
            " ,sum(case when confirm_tag = 2 and charge_type = 2 then 1 else 0 end) payConfirmCount " +
            " ,job_pool_id jobPoolId from job_pool_delivery where state <> 0 and delivery_finished = 1  " +
            "  and job_pool_id in <foreach item='item' index='index' collection='jobPoolIds' open='(' separator=',' close=')'> #{item} </foreach>" +
            " group by job_pool_id " +
            " </script>")
    List<JobProxyTaskCountBO> listJobProxyTaskCount(@Param("jobPoolIds") List<Long> jobPoolIds);

猜测是<> 这个查询过滤条件有问题,然后增加上 转义标签

<![CDATA[state <> 0]]>,然后重启项目解决。

总结

如上是一个排查思路,通过定位对应的mapper,然后进而定位到某个sql,进而定位到引起异常某个字符串附近,最终通过定位排查解决问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据提供的引用内容,报错信息显示是关于JSON解码错误的问题,报错的具体内容是"Extra data: line 1 column 64431 (char 64430)"。根据中提供的错误信息,可能是在解析JSON数据时出现了额外的数据。这可能是由于输入的JSON数据格式正确导致的。请确保输入的JSON数据符合JSON格式规范,并检查是否有额外的数据或非法字符。另外,请确保在解码之前对JSON数据进行正确的处理和清理。 根据提供的引用内容,似乎是一段Python代码,它打开一个名为'cookie.txt'的文件,并尝试解析其中的JSON数据。该代码使用正则表达式提取JSON对象,并将其转换为Python字典。然后,它将字典添加到名为"cookies"的列表中。最后,它关闭了文件。然而,这段代码中并没有直接涉及到报错中提到的行和列。因此,无法确定这段代码与报错之间的具体关联。 要解决JSONDecodeError报错,可以按照以下几个步骤进行排查: 1. 检查输入的JSON数据是否符合JSON格式规范,确保没有额外的数据或非法字符。 2. 检查使用的JSON解析器是否正确,如json.loads()函数是否正确使用。 3. 确保代码中没有其他地方出现错误,可能报错的位置并非是代码中的行和列。 请根据以上指导进行排查和调试,以解决JSONDecodeError报错。如果仍然遇到问题,请提供更多的代码和错误信息,以便更好地帮助您解决问题。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [json.decoder.JSONDecodeError: Extra data: line 1 column 64431 (char 64430)报错解决方法](https://blog.csdn.net/weixin_41848012/article/details/124704620)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值