执行的sql:SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1,在db2数据库下通过druid解析后会多出AS SELECT CURRENT AS TIME FROM SYSIBM.SYSDUMMY1然后传入到数据库底层报错。错误信息如下: Exception in thread "main" com.ibm.db2.jcc.am.vo: DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703, SQLERRMC=CURRENT, DRIVER=4.8.87 at com.ibm.db2.jcc.am.gd.a(gd.java:676) at com.ibm.db2.jcc.am.gd.a(gd.java:60) at com.ibm.db2.jcc.am.gd.a(gd.java:127) at com.ibm.db2.jcc.am.wm.c(wm.java:2510)
原提问者GitHub用户xuanang
您的SQL语句是SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1,在使用Druid解析后,会多出一个AS导致传入底层的SQL语句错误。
这个问题可能是由于Druid对于SQL语句的解析出现了问题,导致生成的SQL语句不正确。为了解决这个问题,您可以尝试以下几个方法:
修改SQL语句:您可以尝试修改SQL语句,避免使用AS关键字,例如将SELECT CURRENT TIME修改为SELECT CURRENT_TIME,以避免Druid生成不正确的SQL语句。
自定义Druid解析规则:Druid是一个开源的Java数据库连接池和SQL解析库,您可以尝试自定义Druid的解析规则,以兼容您的SQL语句。具体来说,您可以通过扩展Druid的SQLParser和SQLSelectParser类来实现自定义解析规则,以适应您的SQL语句。
使用其他的SQL解析库:如果Druid无法解析您的SQL语句,您可以尝试使用其他的SQL解析库。例如,ANTLR是一个流行的开源的语法解析器生成器,可以用于解析SQL语句。您可以尝试使用ANTLR来解析DB2的SQL语句,以替代Druid。
问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。