全部產品
Search
文件中心

Tablestore:SQL查詢常見錯誤排查

更新時間:Jun 30, 2024

本文介紹使用SQL查詢時的常見錯誤處理方法,主要包括OTSUnsupportOperation、OTSQuotaExhausted、OTSParameterInvalid和OtsRequestTimeout四種類型的錯誤。

錯誤碼錯誤資訊描述解決辦法
OTSUnsupportOperationOperation not supportedTable StoreSQL目前覆蓋部分SQL功能集合。當使用未支援的SQL文法時,系統會報錯。使用Table StoreSQL支援的功能。

SQL功能會快速迭代,最新功能集合請以官網文檔為準。更多資訊,請參見SQL支援功能說明

text_match is only supported for TEXT field in filter conditions in search index全文檢索索引函數使用錯誤。全文檢索索引函數(text_match和text_match_phrase)必須使用在多元索引中的TEXT類型欄位,並且只能出現在過濾條件中。確保正確的使用全文檢索索引功能。更多資訊,請參見全文檢索索引
text_match_phrase is only supported for TEXT field in filter conditions in search index
OTSQuotaExhaustedThe 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 secondsSQL運行逾時。
  • 通過多元索引加速查詢。

    如果查詢中包括彙總函式(例如count、sum、avg)、group by或者基於非主鍵的過濾查詢,建議配置多元索引進行查詢加速。

    如果已配置多元索引仍出現該錯誤,建議檢查多元索引是否包含所有查詢時用到的欄位。

  • 如果未配置多元索引,請確保查詢條件包含主鍵列且符合最左匹配原則,並為SQL語句添加limit參數來控制返回的行數。
OTSParameterInvalidField type mismatch, actual: STRING, expect: INTEGER, col: xxx, primary key: {"PrimaryKeys":[{"ColumnName":"xxx","Value":"xxx","PrimaryKeyOption":0}]}資料表中屬性列的資料類型和SQL中屬性列的資料類型不匹配。Table Store資料表是Free-Schema的,允許在同一個屬性列中寫入多種類型的資料,但是SQL是Strong-Schema的,每個欄位必須具有特定的類型定義。

使用SQL時,請確保資料表中屬性列的資料類型與SQL中屬性列的資料類型相匹配。您可以根據報錯資訊修改資料表中指定行對應屬性列的資料類型。

Table 'instancename.tablename' doesn't exist建立映射關係時,指定的表不存在。SQL中的Create Table語句只能為已存在的表或者多元索引建立映射關係。請確保要建立映射關係的表或者多元索引存在。更多資訊,請參見建立表的映射關係建立多元索引的映射關係
Field type 'DECIMAL(11,0)' is not supportedSQL不支援資料類型DECIMAL。SQL查詢只支援部分資料類型。更多資訊,請參見SQL資料類型映射
Search engine: length of field value is longer than 32 for the [WILDCARD_QUERY] querylike條件的字元長度超過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 rowsoffset+limit超過最大限制。使用limit a,b運算式時,a+b超過最大限制。最大限制為150000。確保offset+limit之和小於等於150000。
Unknown column 'xxx' in field listSQL語句中包含了映射表中不存在的欄位名。

通常是由於為資料表建立映射關係後,在資料表中新增了欄位,但是未在對應映射表中添加新增的欄位。

映射表中需要包含查詢所需的欄位,請在映射表中添加新增的欄位。具體操作,請參見更新映射表屬性列
OtsRequestTimeoutSearch engine: search timeout, please retry此次查詢訪問了多元索引且單次查詢運行逾時。查看使用的查詢特性是否需要在多元索引中配置預定義規則。例如要使用order by功能,您可以在建立多元索引時配置預排序。更多資訊,請參見建立多元索引