人大金仓数据库merge sql error, dbType kingbase, druid-1.2.5, sql错误解决
- 一、背景
- 二、错误分析
- 三、解决思路
- 四、总结
一、背景
生产环境总是提示该错误信息,但是sql可以正常查出结果,项目经理提了好几次,作为一名合格的程序员必须解决这个问题。
二、错误分析
完整报错信息merge sql error, dbType kingbase, druid-1.2.5, sql : SELECTxxxxAND info.name like concat('%',?::varchar,'%') com.alibaba.druid.sql.parser.ParserException: syntax error, expect ), actual :: pos 1834, line 67, column 57, token ::
- 提示merge sql错误
- 提示::附近有错误
三、解决思路
- 针对错误提示一
在配置文件中发现开启了sqlmerge配置,改为false后发现不再报该错误。
通过查看资料发现这个配置有用
druid.stat.mergeSql=true:此属性是 Druid 数据源的一个统计功能,它可以将具有相同 SQL 语句但不同参数的查询请求合并为一个请求,从而减少网络传输和资源消耗。当多个 SQL 语句在客户端执行之前被合并时,生成一个带有占位符的 SQL 语句。这是为了减少通信开销,而在服务器端将这些占位符替换为实际的参数值。
最好还是开启mergeSql=true
2. 针对错误提示二
通过查阅资料,发现在 SQL 查询的 concat 函数使用过程中出现了语法错误,Kingbase 数据库不支持::的写法。
推荐一下写法AND 表名称.字段名称 like '%' || " />|| '%'
四、总结
在KindBase数据库想要进行模糊搜索推荐使用 | | 进行拼接