GridDB报错CM_NOT_SUPPORTED:如何检查并设置列指定索引类型?
GridDB 5.1.0 CE 解决 CM_NOT_SUPPORTED 索引相关报错
检查列支持的索引类型
GridDB的索引支持完全依赖列的数据类型,直接通过以下方式确认:
- 用
gs_sh连接集群后,执行show container <容器名> schema查看列类型:- TREE/HASH索引:支持STRING、BOOL、BYTE、SHORT、INTEGER、LONG、FLOAT、DOUBLE、TIMESTAMP、DATE、TIME类型列
- SPATIAL索引:仅支持GEOMETRY类型列
- 不支持索引的列:ARRAY、LIST、MAP这类集合/数组类型列,无法创建任何索引
- 也可以直接尝试创建索引,若返回
CM_NOT_SUPPORTED,就说明该列不支持对应索引类型
排查报错需查看的配置与命令
配置文件
核心配置文件gs_cluster.json(默认路径/var/lib/griddb/conf/gs_cluster.json),重点检查:
clusterName:确保连接集群时使用的名称和配置一致dataStoreDir:WSL环境下注意检查该目录的Linux权限,避免因权限问题导致操作失败
命令行工具
gs_stat:查看集群节点状态,确认集群正常运行gs_sh:所有索引相关操作的入口工具,用于查看schema、创建/删除索引
设置列索引的示例步骤
以创建TREE索引为例:
- 启动
gs_sh并连接集群:gs_sh -u admin/admin - 切换到目标数据库(默认是public):
use public; - 查看目标容器的schema,确认列类型符合要求:
show container test_container schema; - 为指定列创建TREE索引:
create index idx_test_id on test_container (id) using tree; - 验证索引是否创建成功:
show index in test_container;
其他索引类型的创建命令:
- HASH索引:
create index idx_test_name on test_container (name) using hash; - SPATIAL索引(仅GEOMETRY列可用):
create index idx_test_geo on test_container (location) using spatial;
内容的提问来源于stack exchange,提问作者Yousef
相关产品推荐
相关产品推荐

