当调用 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 版本是否满足使用要求。 |