前言
SQL中加入了租户字段,报这个错,可以查出数据,但是不多;SQL检查无问题
解决
原因一
引入新的SQL解析器检查解析SQL,与mybatis多租户无关
参考
xml
<!--jsqlparser版本太低也无法解析,如2.0-->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.2</version>
</dependency>
原因二
SQL递归,当前mybatis不支持SQL递归导致报错,使用一可以解决,但是可能会引起其他SQL报错,注意防范
原因三
多租户,mybatis多租户过滤拦截,使用mybatisPlus用户可尝试加入忽略租户过滤
Mybatis-Plus3.4+,使用拦截忽略注解@InterceptorIgnore(tenantLine = "true")
请注意:Mybatis-Plus3.4之前的版本使用注解@SqlParser(filter=true)
原因四
原因是count函数中嵌套了if函数导致抛异常,不使用"count(if(exprt))"嵌套函数就不会出现异常;
产生异常的原因可能是在后台查询的sql语句中才用了一些sql可能不支持的函数:例如IF(isnull(warning_id), 0 , 1)等,我出现这个这个异常就是sql使用了该if判断条件导致的。改正后不再抛该异常。
或者升级分页的插件(pagehelper)版本也能得到解决
参考链接