背景
在环境中报如下错误,但是并没有影响业务的执行,业务还是正常的执行的
com.alibaba.druid.sql.parse.ParserException: TODO pos 2040, line 44, colunm 46, token RPAREN
- druid 版本: druid-1.1.22
- 数据库: postgresql
报错sql
select u.name,ud.adress
from user as u,user_detail as ud
where ud.uid=u.id(+)
以上sql已经经过处理了,简单化了
源码分析
StatFilter
public String mergeSql(String sql, String dbType) {
if (!mergeSql) {
return sql;
}
try {
sql = ParameterizedOutputVisitorUtils.parameterize(sql, dbType);
} catch (Exception e) {
LOG.error("merge sql error, dbType " + dbType + ", druid-" + VERSION.getVersionNumber() + ", sql : " + sql, e);
}
return sql;
}
SQLExprParser
上面代码发现 +的后面解析不了右括号,所以报错,看看高版本是否支持。
druid 版本:1.2.11 问题还没有修复
解决方案
# 之前这个是true,现在改成false
druid.stat.mergeSql=false