You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GridDB表中新增myName数据后提示无法找到myName问题咨询

GridDB报错「无法找到myName」问题排查及修复

核心错误原因

  • 错误1:col.get()方法仅支持通过行键查询数据,若你创建集合时未将第一个字段设置为行键,或你传入的"myName"不是对应行的行键,调用该方法必然返回找不到数据的报错。
  • 错误2:查询语句select * where name = 'myName'中的字段名name需要和你创建集合时定义的列名完全匹配,若列名设置不一致会触发字段不存在/查询无结果报错。
  • 错误3:col.put()传入的列表值顺序必须和集合定义的列顺序严格对应,若顺序错位会导致"myName"没有被写入你预期的name列,自然查询不到。
  • 错误4:query.fetch(update)中的update如果是未定义的变量,会触发参数异常,该参数需要传入布尔值True表示开启结果集可更新权限。

修正示例代码

首先确认集合创建逻辑(必须和你插入、查询的字段对应):

# 先定义集合结构,假设4个列分别为:name(STRING,设为行键)、flag(BOOL)、count(INTEGER)、content(BLOB)
conInfo = griddb.ContainerInfo("your_container_name",
    [
        ["name", griddb.Type.STRING],
        ["flag", griddb.Type.BOOL],
        ["count", griddb.Type.INTEGER],
        ["content", griddb.Type.BLOB]
    ],
    griddb.ContainerType.COLLECTION, True) # 最后一个参数为True表示将第一列设为行键
col = gridstore.put_container(conInfo)

修正后的数据操作代码:

# 插入数据,顺序和列定义完全对应
col.put(["myName", False, 1, blob])
# 此时因为name是行键,col.get()可以正常获取到对应行
mlist = col.get("myName")
# 查询语句字段名和定义的列名一致,可正常查询
query=col.query("select * where name = 'myName'")
rs = query.fetch(True)
while rs.has_next():
    data = rs.next()
    data[2] = data[2] + 1
    rs.update(data)

内容的提问来源于stack exchange,提问作者Ibrahim Paracha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 22:51:03