本文介绍使用SQL查询时的常见错误处理方法,主要包括OTSUnsupportOperation、OTSQuotaExhausted、OTSParameterInvalidOtsRequestTimeout四种类型的错误。

错误码 错误信息 描述 解决办法
OTSUnsupportOperation Operation not supported 表格存储SQL目前覆盖部分SQL功能集合。当使用未支持的SQL语法时,系统会报错。 使用表格存储SQL支持的功能。

SQL功能会快速迭代,最新功能集合请以官网文档为准。更多信息,请参见SQL支持功能说明

如果您有特定SQL语法的使用需求,请加入钉钉群23307953(表格存储技术交流群-2)进行咨询。

text_match is only supported for TEXT field in filter conditions in search index 全文检索函数使用错误。全文检索函数(text_matchtext_match_phrase)必须使用在多元索引中的TEXT类型字段,并且只能出现在过滤条件中。 确保正确的使用全文检索功能。更多信息,请参见全文检索
text_match_phrase is only supported for TEXT field in filter conditions in search index
OTSQuotaExhausted The sql scanned rows of kv exceeds the quota! Search quota is 100000 rows, table quota is 100000 rows 选择KV引擎作为查询引擎时扫描到的行数或者数据量超过限制。
  • 通过多元索引加速查询。

    如果查询中包括聚合函数(例如count、sum、avg)、group by或者基于非主键的过滤查询,建议配置多元索引进行查询加速。

    如果已配置多元索引仍出现该错误,建议检查多元索引是否包含所有查询时用到的字段。

  • 如果未配置多元索引,请确保查询条件包含主键列且符合最左匹配原则,并为SQL语句添加limit参数来控制返回的行数。
说明 目前扫描最大行数为100000行,扫描最大数据量为128 MB,扫描最大时间为30秒。
The sql scanned rows of search exceeds the quota! Search quota is 100000 rows, table quota is 100000 rows 选择多元索引引擎作为查询引擎时扫描到的行数或者数据量超限。
  • SQL语句添加limit参数来控制返回的行数。
  • 优化SQL语句中的查询条件,将部分SQL计算任务下推到多元索引执行。关于计算下推的更多信息,请参见计算下推
The sql duration time exceed the quota! Quota is 30 seconds SQL运行超时。
  • 通过多元索引加速查询。

    如果查询中包括聚合函数(例如count、sum、avg)、group by或者基于非主键的过滤查询,建议配置多元索引进行查询加速。

    如果已配置多元索引仍出现该错误,建议检查多元索引是否包含所有查询时用到的字段。

  • 如果未配置多元索引,请确保查询条件包含主键列且符合最左匹配原则,并为SQL语句添加limit参数来控制返回的行数。
OTSParameterInvalid Field type mismatch, actual: STRING, expect: INTEGER, col: xxx, primary key: {"PrimaryKeys":[{"ColumnName":"xxx","Value":"xxx","PrimaryKeyOption":0}]} 数据表中属性列的数据类型和SQL中属性列的数据类型不匹配。 表格存储数据表是Free-Schema的,允许在同一个属性列中写入多种类型的数据,但是SQLStrong-Schema的,每个字段必须具有特定的类型定义。

使用SQL时,请确保数据表中属性列的数据类型与SQL中属性列的数据类型相匹配。您可以根据报错信息修改数据表中指定行对应属性列的数据类型。

Table 'instancename.tablename' doesn't exist 创建映射关系时,指定的表不存在。 SQL中的Create Table语句只能为已存在的表或者多元索引创建映射关系。请确保要创建映射关系的表或者多元索引存在。更多信息,请参见创建表的映射关系创建多元索引的映射关系
Field type 'DECIMAL(11,0)' is not supported SQL不支持数据类型DECIMAL。 SQL查询只支持部分数据类型。更多信息,请参见数据类型映射
Search engine: length of field value is longer than 32 for the [WILDCARD_QUERY] query like条件的字符长度超过32个。 减少like条件的字符个数。
Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 使用GROUP BY分组查询时,GROUP BY中未包含聚合函数。 SQL语句中添加聚合条件。更多信息,请参见查询数据
Offset + limit exceeds the quota! quota is 150000 rows offset+limit超过最大限制。使用limit a,b表达式时,a+b超过最大限制。最大限制为150000。 确保offset+limit之和小于等于150000。

如果有更大offset+limit的使用需求,请加入钉钉群23307953(表格存储技术交流群-2)进行咨询。

Unknown column 'xxx' in field list SQL语句中包含了映射表中不存在的字段名。

通常是由于为数据表创建映射关系后,在数据表中新增了字段,但是未在对应映射表中添加新增的字段。

映射表中需要包含查询所需的字段,请在映射表中添加新增的字段。具体操作,请参见更新映射表属性列
OtsRequestTimeout Search engine: search timeout, please retry 此次查询访问了多元索引且单次查询运行超时。 查看使用的查询特性是否需要在多元索引中配置预定义规则。例如要使用order by功能,您可以在创建多元索引时配置预排序。更多信息,请参见创建多元索引