Impala Mybatis Encountered: INTERVAL Expected: DEFAULT, IDENTIFIER

转载请标明出处:
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] >

更多细节请阅读下面文章:

2、Impala预留字段

Impala预留字段

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值