錯誤信息
當(dāng)調(diào)用 API/SDK 使用表格存儲功能時可能會出現(xiàn)一些報錯信息。本文介紹了常見錯誤信息的解決方案。
錯誤信息 | 可能原因 | 解決方案 | 相關(guān)功能文檔 |
java.lang.IllegalStateException: Request cannot be executed; I/O reactor status: STOPPED | 一般是由于 OTSClient 被調(diào)用了 shutdown,其內(nèi)部的 I/O reactor 均已被關(guān)閉。 | 調(diào)用的 OTSClient 不能處于 shutDown 狀態(tài)。如果調(diào)用的 OTSClient 已處于 shutDown 狀態(tài),請重新初始化 OTSClient 后再進(jìn)行操作。 | |
java.lang.UnsupportedOperationException: This is supposed to be overridden by subclassed | 表格存儲 Java SDK 依賴 2.4.1 版本的 Protobuf 庫和 4.0.2 版本的 httpasyncclient,容易與您的應(yīng)用程序中自帶的相同庫沖突。 | 在 Maven 項目中的 pom.xml 中添加如下依賴即可。 說明 classifier 為 jar-with-dependencies,它將依賴的 HttpClient 和 Protobuf 庫都通過 rename package 的方式打包進(jìn)去,去除了對 HttpClient 和 Protobuf 的依賴。
| |
The count of attribute columns exceeds the maximum:128 | 在向表格存儲數(shù)據(jù)表寫入數(shù)據(jù)時,一行最多支持寫入 1024 列。在使用 TableStoreWriter 的過程中,客戶端會有一個默認(rèn)寫入 128 列的限制。 | 使用 Java SDK 構(gòu)造 TableStoreWriter 客戶端時,您可以通過修改 MaxColumnsCount 參數(shù)來適當(dāng)調(diào)大一行默認(rèn)寫入的列數(shù)。 | |
length of field value is longer than 32 for the [WILDCARD_QUERY] query | 帶有通配符的字符串長度超過 32 字節(jié)。 | 使用通配符查詢時,要匹配的值可以是一個帶有通配符的字符串,帶有通配符的字符串長度不能超過 32 字節(jié),請?zhí)鎿Q查詢字符串。 | |
field:xx must enable enable_sort_and_agg | 創(chuàng)建多元索引時沒有為對應(yīng)字段開啟排序與統(tǒng)計聚合(即 enable_sort_and_agg = true)功能。 | 請通過多元索引的動態(tài)修改 schema 功能來為要使用的字段開啟排序與統(tǒng)計聚合功能。具體操作,請參見動態(tài)修改 schema。 | |
[bool_query] sub query must not be null | 查詢條件中的子查詢條件為空,未配置必選參數(shù)。 | 您需要自行排查代碼中查詢條件的相關(guān)參數(shù)配置,請確保已正確配置查詢條件中的所有子查詢條件。 重要 如果自行排查代碼后問題仍未解決,請加入釘釘群 23307953(表格存儲技術(shù)交流群-2)或 36165029092(表格存儲技術(shù)支持群-3)聯(lián)系我們。 | |
can't set [sort] when [token] is not null | 在使用 token 翻頁時設(shè)置了 sort。 | 通過多元索引查詢數(shù)據(jù)使用 token 進(jìn)行翻頁時,token 中已編碼了排序字段,無需再額外設(shè)置 sort。 | |
[table ttl] must be bigger than or equal search index ttl | 數(shù)據(jù)表上存在多元索引,數(shù)據(jù)表的 TTL 必須大于或等于多元索引的 TTL。 | 當(dāng)要調(diào)整數(shù)據(jù)表 TTL 時,請確認(rèn)所需數(shù)據(jù)表 TTL 是否小于多元索引 TTL。
| |
The sql scanned rows of main table exceeds the quota, main table rows quota is 100000 | 如果使用 SQL 查詢數(shù)據(jù)時使用的條件為非分區(qū)鍵,則會造成全表掃描數(shù)據(jù),可能會出現(xiàn)掃描到的行數(shù)或者數(shù)據(jù)量超過限制的情況。 重要 目前 SQL 單次掃描支持的最大行數(shù)為 100000 行,最大數(shù)據(jù)量為 128 MB,最長時間為 30 秒。 | 使用 SQL 查詢數(shù)據(jù)時,請確保查詢條件包含主鍵列且符合最左匹配原則,并為 SQL 語句添加 limit 參數(shù)來控制返回的行數(shù)。 如果查詢條件不滿足上述條件,您還可以通過如下方式進(jìn)行查詢加速。更多信息,請參見索引選擇策略。 | |
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 | 二級索引的存量構(gòu)造需要對表中的存量數(shù)據(jù)進(jìn)行讀取,然后同步到索引表。在存量數(shù)據(jù)同步完成之前,不允許讀索引表,當(dāng)存量數(shù)據(jù)同步完成,可以正常讀取索引表。存量數(shù)據(jù)同步時間與數(shù)據(jù)表的數(shù)據(jù)量大小相關(guān)。 | 等待二級索引存量數(shù)據(jù)構(gòu)造和同步完成后再進(jìn)行數(shù)據(jù)讀取。 | |
Checksum mismatch | 表格存儲的整型是 64 位的,而 32 位 PHP 只能用 string 表示 64 位的整型,所以暫不支持 32 位 PHP;且 Windows 系統(tǒng)中 PHP 7 之前版本的整型不是真正的 64 位。 | 在 Windows 系統(tǒng)中使用表格存儲 PHP SDK 時,PHP版本必須使用 PHP 7 及以上的 64 位版本,強(qiáng)烈建議使用 PHP 7 以獲得最佳性能。 通過 phpinfo() 查看PHP配置信息中的 Architecture 類型,可以判斷 PHP 版本是否滿足使用要求。 |