query过长引起日志解析结果保存失败的解决方法

问题信息

表1 问题的基本信息

信息名称

信息内容

问题来源

网上维护

产品大类

鲲鹏BoostKit

产品子类

大数据

业务场景

调试运行

组件分类

其他

输出时间

2023-01-29

案例作者

伍锐恒

所属团队

鲲鹏BoostKit

评审结果

评审通过

评审时间

2024-01-30

发布时间

2024-03-30

关键字

query过长引起日志解析结果保存失败

归属文档

OmniAdvisor 特性指南

问题现象描述

进行SQL任务解析时,query语句较长,query字段超过64KB时,超过了MySQL文本类型text的默认最长保存长度,当日志解析模块解析成功保存到数据库中会失败,报错信息如下。

javax.persistence.PersistenceException: Error[Data truncation: Data too long for column	'query' at row 1]

关键过程、根本原因分析

结论、解决方案及效果

可手动将history_config表中的query字段类型修改为longtext,相比于text类型,longtext支持存储最大4G的文本,可满足基本要求。

  1. 进入OmniAdvisor所使用数据库。

    # 连接到数据库
    mysql -u username -p password
    # 进入对应database
    use my_database;

  2. 修改history_config表中query字段类型为longtext。

    ALTER TABLE history_config MODIFY query LONGTEXT;

  3. 重新进行该任务的日志解析即可。