转载请标明出处:
http://blog.csdn.net/qq_27818541/article/details/106057979
本文出自:【BigManing的博客】
一、前言
使用impala+mybatis 更新数据时, 报如下错误:
2020-05-11 16:54:33.072 -ERROR [ main] .s.InitiativeServiceImpl : failed to update data
org.springframework.jdbc.UncategorizedSQLException:
### Error updating database. Cause: java.sql.SQLException: [Cloudera][ImpalaJDBCDriver](500051) ERROR processing query/statement. Error Code: 0, SQL state: TStatus(statusCode:ERROR_STATUS, sqlState:HY000, errorMessage:AnalysisException: Syntax error in line 16:
interval = 30,
^
Encountered: INTERVAL
Expected: DEFAULT, IDENTIFIER
二、解决办法
原因是因为表字段interval
是 impala预留字段 ,所以在mapping内的sql语句把预留字段用 反引号``
给包裹起来就行。
...
<if test='null != interval'>`interval` = #{interval},</if>
...
三、延伸内容
1、Impala标识符IDENTIFIER
标识符是你在SQL语句中指定的数据库,表或列的名称。标识符规则控制着您可以为创建的事物赋予什么名称,引用包含不寻常字符的名称的符号以及其他方面(例如区分大小写)。
如果标识符表字段的定义 与 impala预留字段值一样,那就需要反引号来包裹,下面是实例:
[localhost:21000] > create table reserved (`data` string);
[localhost:21000] > select data from reserved;
ERROR: AnalysisException: Syntax error in line 1:
select data from reserved
^
Encountered: DATA
Expected: ALL, CASE, CAST, DISTINCT, EXISTS, FALSE, IF, INTERVAL, NOT, NULL, STRAIGHT_JOIN, TRUE, IDENTIFIER
CAUSED BY: Exception: Syntax error
[localhost:21000] > select reserved.data from reserved;
ERROR: AnalysisException: Syntax error in line 1:
select reserved.data from reserved
^
Encountered: DATA
Expected: IDENTIFIER
CAUSED BY: Exception: Syntax error
[localhost:21000] > select reserved.`data` from reserved;
[localhost:21000] >
更多细节请阅读下面文章: