當調用 API/SDK 使用Table Store功能時可能會出現一些報錯資訊。本文介紹了常見錯誤資訊的解決方案。
錯誤資訊 | 可能原因 | 解決方案 | 相關功能文檔 |
java.lang.IllegalStateException: Request cannot be executed; I/O reactor status: STOPPED | 一般是由於 OTSClient 被調用了 shutdown,其內部的 I/O reactor 均已被關閉。 | 調用的 OTSClient 不能處於 shutDown 狀態。如果調用的 OTSClient 已處於 shutDown 狀態,請重新初始化 OTSClient 後再進行操作。 | |
java.lang.UnsupportedOperationException: This is supposed to be overridden by subclassed | Table Store Java SDK 依賴 2.4.1 版本的 Protobuf 庫和 4.0.2 版本的 httpasyncclient,容易與您的應用程式中內建的相同庫衝突。 | 在 Maven 專案中的 pom.xml 中添加如下依賴即可。 說明 classifier 為 jar-with-dependencies,它將依賴的 HttpClient 和 Protobuf 庫都通過 rename package 的方式打包進去,去除了對 HttpClient 和 Protobuf 的依賴。 | |
length of field value is longer than 32 for the [WILDCARD_QUERY] query | 帶有萬用字元的字串長度超過 32 位元組。 | 使用萬用字元查詢時,要匹配的值可以是一個帶有萬用字元的字串,帶有萬用字元的字串長度不能超過 32 位元組,請替換查詢字串。 | |
field:xx must enable enable_sort_and_agg | 建立多元索引時沒有為對應欄位開啟排序與統計彙總(即 enable_sort_and_agg = true)功能。 | 請通過多元索引的動態修改 schema 功能來為要使用的欄位開啟排序與統計彙總功能。具體操作,請參見動態修改 schema。 | |
[bool_query] sub query must not be null | 查詢條件中的子查詢條件為空白,未配置必選參數。 | 您需要自行排查代碼中查詢條件的相關參數配置,請確保已正確配置查詢條件中的所有子查詢條件。 | |
can't set [sort] when [token] is not null | 在使用 token 翻頁時設定了 sort。 | 通過多元索引查詢資料使用 token 進行翻頁時,token 中已編碼了排序欄位,無需再額外設定 sort。 | |
[table ttl] must be bigger than or equal search index ttl | 資料表上存在多元索引,資料表的 TTL 必須大於或等於多元索引的 TTL。 | 當要調整資料表 TTL 時,請確認所需資料表 TTL 是否小於多元索引 TTL。
| |
The sql scanned rows of main table exceeds the quota, main table rows quota is 100000 | 如果使用 SQL 查詢資料時使用的條件為非分區鍵,則會造成全表掃描資料,可能會出現掃描到的行數或者資料量超過限制的情況。 重要 目前 SQL 單次掃描支援的最大行數為 100000 行,最巨量資料量為 128 MB,最長時間為 30 秒。 | 使用 SQL 查詢資料時,請確保查詢條件包含主鍵列且符合最左匹配原則,並為 SQL 陳述式添加 limit 參數來控制返回的行數。 如果查詢條件不滿足上述條件,您還可以通過如下方式進行查詢加速。更多資訊,請參見索引選擇策略。 | |
Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer] | 缺少 javassist-x.x.x.jar 包。 | 您可以通過以下兩種方式安裝 javassist-x.x.x.jar 包。
| |
Disallow read index table in building base state | 二級索引的存量構造需要對錶中的存量資料進行讀取,然後同步到索引表。在存量資料同步完成之前,不允許讀索引表,當存量資料同步完成,可以正常讀取索引表。存量資料同步時間與資料表的資料量大小相關。 | 等待二級索引存量資料構造和同步完成後再進行資料讀取。 | |
Checksum mismatch | Table Store的整型是 64 位元的,而 32 位 PHP 只能用 string 表示 64 位元的整型,所以暫不支援 32 位 PHP;且 Windows 系統中 PHP 7 之前版本的整型不是真正的 64 位元。 | 在 Windows 系統中使用Table Store PHP SDK 時,PHP版本必須使用 PHP 7 及以上的 64 位元版本,強烈建議使用 PHP 7 以獲得最佳效能。 通過 phpinfo() 查看PHP配置資訊中的 Architecture 類型,可以判斷 PHP 版本是否滿足使用要求。 |