使用Mybatis和druid连接池报错 merge sql error, dbType mysql, sql : select

在使用Mybatis进行数据库查询时遇到一个解析错误,错误涉及到MySQL的关键字DESC。当Druid解析含有该关键字的SQL时,虽然可以执行,但会抛出异常。解决方法包括将关键字用反引号包围或者更改表结构和SQL中的关键字为非关键字。推荐的解决方案是改变表结构和SQL,用其他名称替换关键字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中用mybatis查询的时候遇到一个这样的问题,抛错详情如下:merge sql error, dbType mysql, sql : select ...

merge sql error, dbType mysql, sql : select

        ID
        ,AREA_CODE,DECLARATION_CODE,
        ORIGINAL_REPORT_CODE,REPORT_CODE,REPORT_PARSER_CONFIG,
        DATA_TYPE,BUSINESS_SAVE_TYPE,DESC,DECLARATION_VERSION,
        CREATOR_ID,MODIFIER_ID,CREATE_DATE,
        MODIFY_DATE,IS_DELETE

        from integration_compliance_declaration_parser_config
        where
        is_delete = 0
        and
        DECLARATION_CODE = ?

            and REPORT_CODE in (

                ?
             ,
                ?
             ,
                ?
             ,
                ?
             ,
                ?

            )(traceId=6993f47e28bf49f9a5edecafe41622f6)|||
com.alibaba.druid.sql.parser.ParserException: ERROR. token : DESC, pos : 169
        at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:600)
        at com.alibaba.druid.sql.dialect.mysql.parser.MySqlExprParser.primary(MySqlExprParser.java:172)
        at com.alibaba.druid.sql.parser.SQLExprParser.expr(SQLExprParser.java:85)
        at com.alibaba.druid.sql.parser.SQLExprParser.parseSelectItem(SQLExprParser.java:2166)
        at com.alibaba.druid.sql.parser.SQLSelectParser.parseSelectList(SQLSelectParser.java:373)
        at com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser.query(MySqlSelectParser.java:152)

问题原因:

查询sql中涉及到了mysql的关键字,阿里云drds解析的时候能执行但会抛出这个错误;

解决方案:

方案一:sql中涉及的关键字用``起来(如:`DESC`);

方案二:表结构和sql中涉及的“mysql关键字”均删除掉,使用其他名替代(推荐此方案);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值