當調用 API/SDK 使用表格存儲功能時可能會出現一些報錯信息。本文介紹了常見錯誤信息的解決方案。
錯誤信息 | 可能原因 | 解決方案 | 相關功能文檔 |
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 | 表格存儲 Java SDK 依賴 2.4.1 版本的 Protobuf 庫和 4.0.2 版本的 httpasyncclient,容易與您的應用程序中自帶的相同庫沖突。 | 在 Maven 項目中的 pom.xml 中添加如下依賴即可。 說明 classifier 為 jar-with-dependencies,它將依賴的 HttpClient 和 Protobuf 庫都通過 rename package 的方式打包進去,去除了對 HttpClient 和 Protobuf 的依賴。
| |
The count of attribute columns exceeds the maximum:128 | 在向表格存儲數據表寫入數據時,一行最多支持寫入 1024 列。在使用 TableStoreWriter 的過程中,客戶端會有一個默認寫入 128 列的限制。 | 使用 Java SDK 構造 TableStoreWriter 客戶端時,您可以通過修改 MaxColumnsCount 參數來適當調大一行默認寫入的列數。 | |
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 | 查詢條件中的子查詢條件為空,未配置必選參數。 | 您需要自行排查代碼中查詢條件的相關參數配置,請確保已正確配置查詢條件中的所有子查詢條件。 重要 如果自行排查代碼后問題仍未解決,請加入釘釘群 23307953(表格存儲技術交流群-2)或 36165029092(表格存儲技術支持群-3)聯系我們。 | |
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 | 表格存儲的整型是 64 位的,而 32 位 PHP 只能用 string 表示 64 位的整型,所以暫不支持 32 位 PHP;且 Windows 系統中 PHP 7 之前版本的整型不是真正的 64 位。 | 在 Windows 系統中使用表格存儲 PHP SDK 時,PHP版本必須使用 PHP 7 及以上的 64 位版本,強烈建議使用 PHP 7 以獲得最佳性能。 通過 phpinfo() 查看PHP配置信息中的 Architecture 類型,可以判斷 PHP 版本是否滿足使用要求。 |