记录Spring boot 项目中druid SQL验证报错但是系统功能正常 报后端报 merge sql error 前端数据查询正常

2023-11-12

异常代码:

20:17:49.331 [http-nio-8081-exec-6] ERROR c.a.d.f.s.StatFilter - [mergeSql,169] - merge sql error, dbType oracle, druid-1.2.8, sql : WITH
        orgn AS(SELECT w.dwid,w.qk,w.qkdm,w.jhid FROM cd_orgn_source_attr w WHERE w.dwid='xAJLaafdjei321jlaj13nanfasX000113'),
        pclog AS(SELECT p.orgn_id,p.sand_layer_group_name AS cw ,p.soak_volume,p.thickness,p.soak_thickness,p.perforate_orgn_top_depth top FROM pc_log_desc_infuse p WHERE p.soak_volume>0 AND p.sand_layer_group_name IS NOT NULL ORDER BY top ASC),
res AS(SELECT *FROM orgn w INNER JOIN pclog p ON w.jhid=p.orgn_id),
cwres AS (SELECT cw,orgn_id FROM res GROUP BY orgn_id,cw ORDER BY cw),
layerdata AS(SELECT distinct(cw) AS "cw",SUM(thickness) AS "sy",SUM(soak_thickness) AS "yx",(SELECT COUNT(c.orgn_id) FROM cwres c WHERE c.cw=r.cw ) AS "cs" FROM res r WHERE r.QKDM=? GROUP BY cw),
        sumdata AS(SELECT SUM("cs") AS "cs_sum",SUM("sy") AS "sy_sum",SUM("yx") AS "yx_sum" FROM layerdata),
res1 AS(SELECT l.*,s.*,(l."sy"/NULLIF(s."sy_sum",0)*100) AS "p_sy",(l."yx"/NULLIF(s."yx_sum",0)*100) AS "p_yx",(l."cs"/NULLIF(s."cs_sum",0)*100)AS "p_cs" FROM layerdata l,sumdata s),
res2 AS(SELECT "cw",k AS "key",CASE
            when v >= 0 and v < 35 then 'c1'
            when v >= 35 and v < 40 then 'c2'
            when v >= 40 and v < 50 then 'c3'
            when v >= 50 and v < 75 then 'c4'
            when v >= 75 and v <= 100 then 'c5'
            END AS "value"
            FROM res1 t UNPIVOT (v  FOR  k IN("p_cs","p_sy","p_yx")) t),
            res3 AS (SELECT *FROM (select t."key",t."value",count(0) AS cc from res2 t group BY t."key",t."value") PIVOT (SUM(cc) for "value" in ('c1' as "c1",'c2' as "c2",'c3' as "c3",'c4' as "c4",'c5' as "c5")))
            select * from res3
com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'      FROM res1 t UNPIVOT (v  FOR  k IN("p_cs","', expect ), actual null, pos 1371, line 18, column 26, token IDENTIFIER UNPIVOT

问题描述:

1.前端可以正常返回结果,但是后端控制台报错 错误代码:

2.输出的sql可以在sqlplus中正常执行

20:17:49.331 [http-nio-8081-exec-6] ERROR c.a.d.f.s.StatFilter - [mergeSql,169] - merge sql error, dbType oracle, druid-1.2.8, sql

问题分析及解决:

        开始怀疑是不是使用了Oracle函数 PIVOTUNPIVOT 导致的问题,转念一想阿里天天都在用 pivot 和 unpivot 这是不可能的,然后开始度娘......

方法1.(升级druid版本)(失败)

        查询相关资料有人说是  druid版本过低(1.2.5),然后果断 升级成  druid-1.2.8....(然并卵).

方法2.(修改application.yaml)中druid配置 (成功)

        修改

       spring:datasource:druid:filter:merge-sql:false

        

问题解决了,确实不报错了,可是这和掩耳盗铃有什么区别,简直是侮辱码畜的职业素养。

方法3.(勇敢面对问题)

        回头仔细看下异常代码,

com.alibaba.druid.sql.parser.ParserException: syntax error, error in :
'      FROM res1 t UNPIVOT (v  FOR  k IN("p_cs","', expect ), actual null, pos 1371, line 18, column 26, token IDENTIFIER UNPIVOT
	at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:841)
	at com.alibaba.druid.sql.parser.SQLParser.accept(SQLParser.java:849
.......

 还是得从SQL下手,

 问题出现在红框的SQL语法问题,虽然在sqldevlop中可以正常运行但是还是不够严谨,修改成绿框中内容后,系统就正常了。

总结:

merge sql error 不是真正的ERROR,而是告诉你,骚年! 你的SQL水平有待提高......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记录Spring boot 项目中druid SQL验证报错但是系统功能正常 报后端报 merge sql error 前端数据查询正常 的相关文章

随机推荐

  • C++入门——命名空间

    文章目录 前言 命名空间的定义 命名空间的使用 前言 在c c 中 会有变量 函数以及后面的类 这些名称都要存在于局部的 可能会有冲突 所以使用命名空间的意义就是 对标识符的名称进行本地化 以避免命名冲突或者名字的污染 namespace关
  • WSL 2 网络配置

    文章目录 WSL 2 访问局域网内设备 WSL 2 访问本机 Windows WSL 2 访问非本机 Windows 设备 局域网内设备访问 WSL 2 本机 Windows 访问 WSL 2 非本机 Windows 设备访问 WSL 2
  • 支持向量机matlab代码程序_多核支持向量机原理及实现

    了解非线性支持向量机模型后 应该对支持向量机的原理与核技巧都有掌握 本文在传统非线性支持向量机基础上向大家介绍多核支持向量机 这里就不对支持向量机原理与核函数花费太多笔墨了 主要介绍将单核支持向量机转换为多核支持向量机的思想 原理介绍完之后
  • Some collections were archived because you’ve reached the shared requests limits.错误解决

    今天打开我的postman 发现我的一个collection不见了 左下角出现一个提示 Some collections were archived because you ve reached the shared requests li
  • win11安装WSA(安卓子系统)教程

    1 更新到最新版win11 截止2021年10月23日 最新版本号是22000 282 2 启用Windows沙盒和Windows虚拟机监控程序平台 控制面板打开程序与功能 启用或关闭Windows功能 找到这两个选项 打钩确定 等待安装
  • 机器学习实战第十四章-利用SVD简化数据

    一 什么是SVD SVD Singular Value Decomposition 奇异值分解 基本知识如下图所示 其中U和V都可以作为高维转低维的转换矩阵将原始高维冗余数据转换到一个低维无冗余语义空间中 从而实现数据的降维 SVD的应用
  • fastjson总结

    fastjson 版本 1 2 36 主要 API 序列化 API String JSON toJSONString Object 将对象序列化为 json 字符串 反序列化 API T JSON parseObject String st
  • 记一次mybatis-plus遇到的问题

    在用了 springboot 和 mybatis plus很久之后 有一天突然看到配置文件有点繁杂 想将相同的配置拉到application yml里 就在将配置拉过去后 问题就开始出现了 在调用 baseMapper method 的时候
  • 【杰发科技AC7802x测评】4,RTC串口输出

    起初我认为AC7802X的实时实钟会很难 我想留着以后再评吧 可是今天看了RTC说明突然开了悟了 原来RTC只是个计数器 我打开例程并没有发现RTC时钟的例程 到是有个秒中断例程 那也不要紧我把它的功能补全吧 typedef struct
  • 【C++基础学习】引起类模板被实例化情形总结

    在我们使用类模板时 只有当代码中使用了类模板的一个实例的名字 而且上下文环境要求必须存在类的定义时 这个类模板才被实例化 并不是每次使用一个类都要求知道该类的定义 1 声明一个类模板的指针和引用 不会引起类模板的实例化 因为没有必要知道该类
  • 虚拟DOM和真实DOM的区别

    DOM DOM意思是文档对象模型 Dcoument Object Model 它是一个结构化文本的抽象 操作DOM 所以 只要我们想要动态修改网页的内容的时候 我们就修改DOM var item document getElementByI
  • 第二章:25+ Python 数据操作教程(第十七节PYTHON 字典理解与示例)持续更新中

    在本教程中 我们将介绍 Python 中字典理解的工作原理 它包含各种示例 可以帮助您学习字典理解的概念以及如何在现实场景中使用它 什么是词典 字典是Python中的一种数据结构 用于存储数据 以便将值与其相关的键连接起来 大致来说 它的工
  • mac终端操作文件或文件夹(持续更新)

    1 复制文件夹 有文件 cp R 要复制的文件 要复制到哪个路径 2 复制文件 cp 要复制的文件 要复制到哪个路径 3 移动文件夹 mvdir 你要移动的文件夹 要移动到哪里
  • C++ 变量类型

    C 变量类型 变量其实只不过是程序可操作的存储区的名称 C 中每个变量都有指定的类型 类型决定了变量存储的大小和布局 该范围内的值都可以存储在内存中 运算符可应用于变量上 变量的名称可以由字母 数字和下划线字符组成 它必须以字母或下划线开头
  • 手搓のTensorRT网络

    用过TensorRT的基本都接触过trtexec 1 可以方便快捷地将你的ONNX模型转换为TensorRT的engine trtexec onnx model onnx 其中原理是啥 这就涉及到了另外一个库onnx tensorrt 2
  • git 获取不到gitLab创建的新分支

    当我们在日常开发功能的时候 肯定会涉及到新建分支的问题 这时候我们本地的IDE就无法去切换新创建好的分支 因为切换的时候根本找不到那个新建的分支 此时可以可以去通过刷新分支达到发现新分支的目的 找到项目的路径并打开Git Bash Here
  • 第一次作业

    include stm32f4xx h include sys h include delay h include led h include key h int main void u8 MENU NVIC PriorityGroupCo
  • Integer中parseInt(),valueOf(),toString()的区别

    1 parseInt String s int radix 以给出的radix解析s 当不给出radix时 与valueOf 的作用一样 只是s不要超出Integer的范围 2 valueOf String s 把s转换成Integer类型
  • c语言5的阶乘流程图_C语言学习 算法

    1 程序 对数据和操作的描述 算法 数据结构 程序 2 算法的特性 有穷性 在合理的范围内 确定性 无歧义 有零个或多个输入 有一个或多个输出 有效性 3 算法的表示 自然语言 日常用的语言 汉语 英语或其他语言 流程图 4 传统流程图即3
  • 记录Spring boot 项目中druid SQL验证报错但是系统功能正常 报后端报 merge sql error 前端数据查询正常

    异常代码 20 17 49 331 http nio 8081 exec 6 ERROR c a d f s StatFilter mergeSql 169 merge sql error dbType oracle druid 1 2 8