在项目中用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关键字”均删除掉,使用其他名替代(推荐此方案);